Why software engineering is a complex process?
Compare to other fields (Civil, Electrical) engineering of software considered to be a much complex process due to the uniqueness of each software developed. Software is developed according to a particular user or group preferences, where identifications of exact customer specifications is really a hard process, thus those specifications defines a significant proportion of uniqueness of a software. For an instance, even if we are developing two of software for same purpose, but for two different customers, the functional and non-functional requirements of those customers would be significantly varied, therefore definition of problem domain is much hard process.
Attributes of a Complex System
Complex system often designs with the mind of hierarchical structure as the high level view of the system which allows to decompose ‘is-a’ and ‘part-of’ relationships of the system easily. A hierarchy often consists of few different levels where various combinations and arrangements (inter-component and intra-component relationships) of sub systems form the hierarchical structure. Thus, a complex system can not be developed right from the scratch, but is a system resulted by evolvements of simple system. Since complexity of such systems exceed the human intellectual capacity, concepts of decomposition, abstraction and hierarchy is used to address these constraints.
Object oriented analysis and design is a method that leads us to view the complex system as meaningful collection of objects and whereby achieve the high level behavior of such system. It provides rich set of notations, processes and models to construct a complex system.
Object-Oriented Analysis: basically, we try to identify set of meaningful objects from the problem domain by concerning the requirements of the system.
Object-Oriented Design: Defines the process of OO decomposition and defines the notations of logical and physical, and static and dynamic models of the system.
Elements of Object Model
Ø Abstraction
Abstraction is a high level generalization which identifies the most important characteristics of an object relative to the perspective of viewer, and thereby come up with real world conceptual boundaries. It basically suppresses the information which is significant to user.
Ø Encapsulation
Once we define the abstractions of a system, encapsulation helps us to define the structures and behaviors of those abstractions. In other words, abstraction defines the interface (observable behavior) while encapsulation defines the implementation of observable behavior.
Ø Modularity
Modularity is the process of decomposing a system into a set of modules which are loosely coupled and are working effectively together. Modularity helps to reduce the complexity of a system to the viewers and enable easy and quick understanding of complex systems.
Ø Hierarchy
Hierarchy which is actually the ordering of abstractions of a complex system, forms the high level view of such system. Most important hierarchies in a complex system are its class structure (the "is a" hierarchy) and its object structure (the "part of" hierarchy).
No comments:
Post a Comment