In order to develop the effective software, good software architecture is required otherwise developer may failed to develop software project. This is because, good software architecture reduces the risk of system failure, and makes the software more effective. There are various research on the software architecture, among them this paper mainly describes the research of the David Praner and Mary shaw related to software architecture. This paper critically evaluate the researches of both the researchers in order to understand different view about software architecture and this paper also compared the research of both the researcher related to decomposition of the whole software system into different subsystem in order to demonstrate a good software architecture.
Software architecture can be defined as the high level structure of a software system, which is the process of defining structured solutions that assembles all of the operational and technical requirements by optimizing the quality attributes like security, performance and manageability. There are several research on software architecture. The research of David Parnas and Mary Shaw mainly concentrate on the development of the software architecture and resolving the issues related to system level design of any software.
However, both of the researcher focuses on the software architecture but their research is not based the same topic. The researcher David Parnas mainly discusses the effectiveness of the modularisation mechanism and it also discusses the role of modernisation as the technique to improve the comprehensibility and flexibility of vany system by allowing the shortening of development times. On the other hand Mary Shaw discusses the abstraction technique like the high level programming language and different problems that cannot be resolved by the current techniques.
David Parnas describe there are several benefits of modular programming that are related to managerial, comprehensibility and product flexibility. David Parnas describe that there are mainly two ways of modularisation by which a system can be built. Among two modularisation system the modularisation 1 have 5 different modules like module 1: inputs (it reads the data from the input medium, and stores them in core), module 2: Circular shift: Circular shift (it mainly prepares an index that give the address of the first character of every circular shift), module 3: Alphabetising ( It takes an input array which is produced by modules 1 and 2). On the other hand, module 4: Output ( it generates a nicely formatted output by listing all of the circular shifts), module 5: Master control (this module does a little more than the control by sequencing the four modules) (David, 1972). The modularisation 2 is consists of 6 different modules, they are module 1: Line storage (this module consists of a number of subroutines and functions that can provide the means by which the module user can call it), module 2: Input ( it reads the main lines from the input and call the line storage module), module 3: Circular shifter (it provides the analog functions provided by module 1). Along with it other module is module 4: Alphabetiser (this module consists of two functions that are ITH and ALPH), module 5: Output (this module gives the desires circular shifts or set of lines, module 6: Master control (it controls the overall modules by sequencing all the above mentioned module).
After demonstrating both the modularisation David Parnas demonstrate the comparison between the two. In the first modularisation the interfaces between different modules is very complex which describe that the design decisions of modularisation 1 cannot be taken lightly (David, 1972). On the other hand the interfaces in second modularisation are more abstract than the first one. It primarily consists if the name, number and types of parameters.
Mary Shaw mainly demonstrates the software architecture level of design. According to the researcher software architecture design includes pipes and filters (here every module accept an array of inputs and emits the stream of output), data abstraction (data abstraction helps an useful ways to organise a software), layered system (software architecture is consists of different layers , inner layer are always hidden from the outer layers). Along with it there are also several components that are rule based system (the computation is mainly organised as the unordered collection of every rule, every rule gives a condition under which the rule is applicable), blackboard system (software architecture is the blackboard system that represents the present state of the computation) (Shaw, 1989).
According to Mary Shaw the above mentioned system organizations are constructed by merging the subsystems. Subsystems are the independently compatible modules that are linked by the shared information. Subsystem allows a variety of implementation of the function it provides. However, for software architecture it is not adequate to recognize the system structure and mechanism for composing the subsystem into systems (Shaw, 1989). Theses elements are very much complex because it cannot be reconstructed from the memory. Informal analysis and the organization of data from the experience must precede the formal specification. Basis of the formal specification includes informal description, syntax, evaluation criteria, design dimensions etc.
Among both the research, David parner was the first person who sets the architectural view of any software system based on the modularisation concept and presented system design problem. Mary shaw's research concerns the development of the software architecture but it is not identical with the David Parner. However, both the researcher demonstrates their understanding on software architecture but David Parner mainly consider the mechanism to decompose the system into modules and the design decisions that must be made before any work on different modules can begin. The research of David Paner mainly consider two types of modularisation techniques, whereas, the second modularisation technique is more effective than the first modularisation. This is because the second modularisation technique is more abstract than the first one and it can change data representation and algorithm in each of the modules without affecting other modules. On the other hand modularisation 1 can lead to the failure of the whole system if one of the module has changed, along with that it is more complex in structure. Therefore, it can be said that only complex software architecture is not effective architecture, in order to make an effective architecture every components must be independent of each other. According to David Parner the first modularisation technique is not effective because it is effective for making a flowchart but it is not effective enough to make design decisions because it has above mentioned error.
According to the research of Mary Shaw the effective decomposition of system into various subsystems is the main reason for the success of the software architecture. However, only the decomposition of the subsystem or identification of the system is not effective, in order to make the system effective informal analysis and organization of the data is important. The architecture provided by Mary Shaw describe how inputs can be transformed into output by using different subsystem like pipes and filters, layered system, data abstraction, blackboard system, rule based system etc. For software architecture, it is not effective you only identify subsystem, system, techniques to compose the subsystem into system. In order to make this happen knowledge required about codification of the subsystem in system in an uniform way.
From the above discussion a clear and brief idea about the software architecture can be understood. Different researcher demonstrates different ways to describe the software architecture. Software architecture can be done in that way so it can solve the entire possible problem that can arise in the future. During the development of the software architecture one developer must consider the changing needs from the user, easy access of the software, its robustness and security features. During the development of the software architecture developer must follow the simple strategy to develop the architecture and developer must make every component independent of each other.