StudentShare
Contact Us
Sign In / Sign Up for FREE
Search
Go to advanced search...
Free

Software Architecture - Term Paper Example

Cite this document
Summary
The paper "Software Architecture" presents an overview of the most commonly used architecture styles and patterns. Whether developing a desktop application or web-based software program, the architecture design formulated would be a specialized version of one of the documented styles and patterns…
Download full paper File format: .doc, available for editing
GRAB THE BEST PAPER97.8% of users find it useful
Software Architecture
Read Text Preview

Extract of sample "Software Architecture"

Software Architecture Styles and Patterns Table of Contents Introduction 3 2.Software Architecture Styles and Patterns 4 A.Main Program and Subroutines 5 B.Object-oriented Style 5 A.Virtual Machine Styles 6 B.Client-Server Style 6 A.Batch Sequential Style 7 B.Pipes and Filters Style 7 A.Blackboard Style 7 A.Rule based Style 8 A.Interpreter Style 8 B.Mobile Code Style 8 A.Publish-subscribe Style 9 C.Event Based Style 9 D.Peer-to-peer Style 9 3.Conclusion 10 4.References 11 1. Introduction Software architecture represents the high level structural model of a software system. While defining architecture, the system is decomposed into numerous computational components and the interaction of these components is characterized (Babar, Dingsoyr & Lago, 2009, p. 3). Software architecture is important with regards to the several purposes it fulfills (Babar, Dingsoyr & Lago, 2009, p. 2): 1. Helps communicate with the stakeholders. Software architecture presents a global graphic design which can be communicated to the client, end users and the designers. 2. It also aids in the development phase in building a basic skeleton system based on various components. 3. It facilitates the design decision making process by explicitly assigning and balancing functionality, quality and testing features to the various interacting components. One important aspect of software architecture is the identification and characterization of the components at a generally higher level of abstraction i.e. higher than the abstract data type or modular level. This level of abstraction is called software architectural styles or patterns. These styles and patterns synonymously refer to a composition and arrangement of components and the way of interaction between these components (Bass, Clements, & Kazman, 2003, Section 5.9). This arrangement is in actual a generalization of the best practices adopted in specific problems. By identifying the style or pattern involved in a particular architecture, the software architects can immediately understand the basic working model of the intended system. This report discusses some of the most commonly used architectural styles and patterns with publicly known instances of the styles and patterns. 2. Software Architecture Styles and Patterns Software architecture is a formal arrangement of integral elements/components of a system while architectural style or pattern is a generalization of the best practice solution that can be applied in a particular scenario. It represents of a set of principles that provide an abstract framework of components, their types (whether a repository of computational component, etc.) their layout and relationships (e.g. input and output dependencies) and interaction mechanisms (e.g. events based, procedure calls, etc.) that all systems falling into a similar category can follow. Thus, architectural styles or patterns aid in partitioning a system and facilitate in reusing the pre-existing solution designs to solve the frequently occurring similar system formulation problems (Garland & Anthony, 2003, p. 171; Gomaa, 2011, p. 198). The problem and context of the selected architectural components aid in selecting a particular architectural style characterizing components and connectors (Gomaa, 2011, p. 205). In a style or pattern, components could be computational, memory related, managerial or a controller while the connector depicting interaction mechanisms between components could be procedure call, data flow, implicit invocation, message passing, shared data or instantiation. Section 2.1 to 2.10 provides a brief description of a few architectural styles and patterns (Taylor, Medvidovic, & Dasho, 2008, p. 101) suggesting the criterion when to adopt a particular style and pattern. 2.1. Language-influenced Styles This category of styles is based on the pattern exhibited to the one in programming languages. A. Main Program and Subroutines The architectural style allows the system to have a control component (the main program) that defines order of execution of the various system components (subroutines). These components are identified on basis of their actions with reference to time. Example includes the scheduler in the CPU. The style is used in cases where applications are simple and small and do not require any complex data structures or changes in future. B. Object-oriented Style The style allows for designing a system as platform of communicating objects having certain roles and responsibilities rather than routine packages or procedural set of instructions. The architecture allows for the system to be divided into tasks based on complex, reusable real world objects comprising of the relevant data and behavior. These objects are loosely coupled, independent and discrete. They communicate through independent interfaces through message sending and receiving and collaborate to perform series of tasks. The architecture requires a homogenous deploying environment where high performance is not a requirement. 2.2. Layered Styles Layered architecture allows a system to be based on segregated concerns (in form of layers) through maintaining a hierarchy of responsibilities (functionalities) and roles (the interaction mode and type of interaction with neighbouring layers. Example of the architecture includes a typical Web application whose design comprises of a presentation layer (with UI functionality), a business layer (with rules for processing), and a data layer (with data access functionality). A. Virtual Machine Styles The architecture is useful in cases where the levels are few, data is not be accessed from multiple layers and several applications share a common service layer. If a change is brought to the underlying layer, the interface must remain stable. Example includes several operating systems running on the same host machine. B. Client-Server Style The architecture allows the segregation of system into two layers; the server and a client. Servers provide the low processing clients with requested service. The server is independent and provide centralized computational and data location promoting scalability and management. Numerous clients access one server and the processing is confined to data entry and presentation. The architecture is effective in cases where the network bandwidth is not limited and can adjust several clients. Example includes a web-browser connecting to a remote server. 2.3. Data-Flow Styles These styles are based on the flow pattern of the input data. A. Batch Sequential Style The architectural style is used in case the problem can be decomposed into sequential steps. It allows the system based on several individual components to execute sequentially on batched input data. Concurrent output or random data access is not provided in this architecture style. B. Pipes and Filters Style The pipe and filter architectural pattern allows a system to comprise of numerous small reusable components termed as filters that incrementally process serializable data structures without interaction. These filters operate on the input data routed by pipes producing output which serves as input to the next filter in line. Compiler is a program that is based on the pipes and filters architecture. The filters in the chain are the lexical analyzer, syntax analyzer, semantic analyzer, intermediate code generator and optimizer. 2.4. Shared Memory Styles This architectural style is based on a central shared repository of data and status. A. Blackboard Style In this architecture style, independent components exclusively access and hold simple communication via a centralized repository called blackboard. The style is used when a common, global, updating data structure is used as basis of all calculation and the processing order is data-driven and so is determined dynamically. The interface remains constant and accesses all portions of the common data. A. Rule based Style This style uses simply expressed facts/rules stored into a knowledge base for resolving simply expressed queries through inference. The rules must be limited and independent. High performance must not be mandatory in this architectural style. 2.5. Interpreter Styles Revolve around the manner of code execution and the degree of offered customization. A. Interpreter Style Interpreter style is used when a dynamic parsing and execution of the input stream is required of which the interpreter maintains an updated state. The style offers high degree of end-user customizability but not high performance. B. Mobile Code Style In this style the efficiency is achieved by providing local processing to the application data by ensuring code is mobile i.e. it is executed in a remote host, thus rendering dynamic customization to a local processing node. The code must be assured of security and tight versioning must not be a requirement for deployment. 2.6. Implicit Invocation Styles In this category, the styles are based on the event announcement and handling mechanism. A. Publish-subscribe Style The style divides system into two loosely coupled components; publishers and subscribers. A publisher broadcasts event message to a subscriber which then execute some event handling routine. The subscription data must be small and be efficiently transported. A middleware is required for supporting high data volumes. C. Event Based Style In this style independent, concurrent, heterogeneous, networked components trigger and receive events by communicating asynchronously on events buses. Runtime processing of triggered events is not ensured by this style. D. Peer-to-peer Style In this style the state and behavior is distributed amongst the independent, networked, heterogeneous and trusted components called peers that serve as clients as well as servers. The style offers a failure tolerant and scalable solution where constant presence of particular nodes ensures constant availability of particular resources. 2.7. Compounded Styles Architectural styles provide a general solution of the adopted best practices. A system can be a based on of a specialized version of the general style. Systems architecture is very scarcely encompassed entirely by one architectural style or pattern. Generally systems comprise of several styles and patterns working together to provide better and more effective solutions (Microsoft, 2009, p. 21). For instance, in web applications, the client-server layered style is used to provide the basic application design. The 3 tiers are presentation, business and data. The business layer can have the batch sequential architecture. 3. Conclusion Software architecture is an essential requirement in the development of a software program. Software styles and pattern offer generic architectural designs for the mostly occurring real world scenarios and problems. By using the best practice architecture styles and patterns, the software program reuses a guaranteed and tested architecture design which is known to have worked in a similar problem scenario. Reuse saves time and resources. The report presented a brief overview of the most commonly used architecture styles and patterns. Whether developing a desktop application or web-based software program, the architecture design formulated would be a specialized version of one of the documented styles and patterns. The implementation details may vary due to advancement in programming languages, but the styles and patterns would remain the same. 4. References Babar, M.A. Dingsoyr, T. & Lago, P. (2009) Software Architecture Knowledge Management: Theory and Practice. Springer Bass, L., Clements, P. & Kazman, R. (2003). Software architecture in practice. Addison-Wesley Professional Garland, J. & Anthony, R. (2003). Large-scale software architecture: a practical guide using UML. John Wiley & Sons Inc. Gomaa, H. (2011). Software Modeling and Design: UML, Use Cases, Patterns, and Software Architectures. Cambridge University Press Microsoft (2009) .NET Application Architecture Guide: patterns and practices. 2nd Edition. OReilly Media, Inc. Taylor, R.N., Medvidovic, N. & Dasho, E.M. (2008). Software Architecture: Foundations, Theory, and Practice. Chapter 4. Designing Architecture. John Wiley & Sons Inc. Read More
Cite this document
  • APA
  • MLA
  • CHICAGO
(“Software Architecture report Essay Example | Topics and Well Written Essays - 1500 words”, n.d.)
Software Architecture report Essay Example | Topics and Well Written Essays - 1500 words. Retrieved from https://studentshare.org/information-technology/1582104-software-architecture-report
(Software Architecture Report Essay Example | Topics and Well Written Essays - 1500 Words)
Software Architecture Report Essay Example | Topics and Well Written Essays - 1500 Words. https://studentshare.org/information-technology/1582104-software-architecture-report.
“Software Architecture Report Essay Example | Topics and Well Written Essays - 1500 Words”, n.d. https://studentshare.org/information-technology/1582104-software-architecture-report.
  • Cited: 0 times

CHECK THESE SAMPLES OF Software Architecture

IT210 Assignment 4 Analysis modeling, Design Concepts and Architectural Design

In a paragraph, explain the purpose of Software Architecture and how it relates to design.... Software Architecture is basically a framework of an application.... The Software Architecture provides the supporting outline upon which various software modules are built.... In a nutshell, Software Architecture involves the framework for the whole software structure, while software design is based on class on module level.... The architecture handles the memory size of the application, how the modules would interrelate, and the recovery systems that should be in place....
3 Pages (750 words) Essay

How UML and Agile Development Fit Together

What is Software Architecture and how is it different from other forms of design?... Software Architecture is the designing and implementation of high-level structure of software.... While other forms of software design are largely about algorithm and data structures, Software Architecture is mainly about elements, forms, and rationale of the design at a larger scale (Clements et al.... Software Architecture comes about through assembly of architectural elements in well-chosen forms to satisfy the functionality and performance needs of system....
4 Pages (1000 words) Essay

Software Architectures

It gives a brief overview of why software applications would be based on a particular Software Architecture. … The functional tiers of a software application define how the work done by the application is distributed within the application.... The 1980s saw the advent of the popular two-tier, client-server architecture.... This gave rise to the implementation of the three-tier architecture which visualized the separation of the presentation logic and the business rules....
4 Pages (1000 words) Essay

Software Design

Software Architecture, as defined by Shaw and Garlan (1996), includes a set of crucial decisions concerning the software system organization techniques such as the selection of structural elements and their interfaces; expected behaviors among the defined elements; composition… performance, comprehensibility, usability, aesthetic issues, resilience and economic/technical constraints; and architectural guiding styles for the organization. Software Architecture is also the structure Software Design Software Design Where Software Architecture ends and software design begins....
2 Pages (500 words) Essay

Software Design

These emerging issues will either be USABILITY AND Software Architecture: “THE FORGOTTEN PROBLEMS” The “forgotten problems”.... The Software Architecture in place will determine the easiness of change.... he Software Architecture is the representation of the software development.... ow does Software Architecture interact with usability?... Usability requirements should be determined especially for those impacting Software Architecture....
2 Pages (500 words) Essay

The Role of Software Architecture

The paper “The Software Architecture” presents an illustration of the Software Architecture along with the software components.... The objective of developing Software Architecture is that the under development software application should qualify all the quality parameters defined in the architecture.... It is pertinent to mention here that the advantages of using the software application cannot be achieved if the software application does not accomplish the quality parameters specified in the Software Architecture....
12 Pages (3000 words) Assignment

Enterprise System: Case of Peets Coffee and Tea

Pee's coffee and tea can invest in better management software, re-architecture the current software to align with its current objectives or invest a cloud-based management system.... This case study outlines the fact that businesses have to invest in good software to address client needs better and to operate seamlessly.... The author accentuates the idea of the software systems being overwhelmed when the business grows much faster or when a business....
7 Pages (1750 words) Case Study

Software Architecture: Design and Implementation

… Protocol DesignA server that after the connection of a client reads files and sends to the client, the client then sends back an answer to the question and if correct score will be sent to the client.... he server gives the list of the questions with Protocol DesignA server that after the connection of a client reads files and sends to the client, the client then sends back an answer to the question and if correct score will be sent to the client....
3 Pages (750 words) Coursework
sponsored ads
We use cookies to create the best experience for you. Keep on browsing if you are OK with that, or find out how to manage cookies.
Contact Us