It deals in the field of design or drawing of something, and it is all about software system designing but not all design is this architectural view. Basically architectures anchors about those problems, which will be complex and complicated to change once the system is made: Such as quality attributes security and performance, non-functional needs e.g. costs, deployment hardware. etc. It is basic organization of a system, enveloped with its component, they are connected to each other, and principles governing its design and evolutions.
It defines structures as a decomposition of system in to parts or modules or subsystem, and also with part of its interfaces, component communication and dependencies and their responsibility. For an example Client-server, in which server give few types of services: client request and use services. Here one main part play important role in system architectures is Interface.
Interface: Anything can be published by module on which clients can depends. It is divided in many parts but here, we will see about services and subsystem interface. Service: it is a set of related operation which share common purpose,like notification subsystem service[ LookupChannel(), SubscribeToChannel(), SendNotice(), UnscubscribeFromChannel()], and services are defined in system design. Subsystem Interface: It is a set of completely classed related operations, it is defined in object design and we can also call application programmer interface.
Coupling and Cohesion: Its aims is reduction of complexity during changes.
Cohesion: It measures the dependencies between classes. In high cohesion, classes in the subsystem do similar work and they are related to each other, through associations. Where as in low cohesion, maximum number of miscellaneous and auxiliary classes found, and association is not found between them.
Coupling: It measures dependency among subsystem. In high coupling, Changes occurs in one subsystem will shows high impact on the other subsystem. Here we give some examples: change of model, massive recompilation, etc. Where as, in low coupling, Any single change in one subsystem does not affect any other subsystem. Subsystem must have maximum cohesion and minimum coupling as possible.
To Schedule a Software Architecture tutoring session
To submit Software Architecture assignment click here