블로그 이미지
Flying Mr.Cheon youGom

Recent Comment»

Recent Post»

Recent Trackback»

« 2025/5 »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

 

'포사'에 해당되는 글 2

  1. 2011.10.17 서문
  2. 2011.10.07 [POSA1] Broker Architecture Pattern
 

서문

번역/Patterns For Parallel Software Design | 2011. 10. 17. 21:46 | Posted by youGom
The steady increases in processor speeds associated with Moore's Law has improved software performance for decades without necessitating significant changes in software designs or practices. Over the past several  years, however, the exponential growth in CPU speed has stalled. Increases in software performance now stem largely from exploiting parallel processing to exchange data reliably and scalably across high-speed interconnects, dynamically balance workload in computation grids, and efficiently synchronize access to shared resources. Researchers and practitioners rely on parallel processing to accelerate scientific discoveries and deliver value to users in a wide range of application domains, including high-performance scientific computing, weather forecasting, financial services, animation rendering, text mining, homeland security and enterprise content management.
 

무어의 법칙대로 프로세서 속도의 지속적인 증가는, 소프트웨어 설계나 관행에 특별한 변화를 필요로 하지 고, 수 십년간 소프트웨어 성능을 개선시켜 왔습니다.
  

 Although parallel processors and interconnects continue to improve, it remains tedious and error-prone to develop complex application and infrastructure software that can meet challenging – and changing – user requirements. This situation has yielded a ‘parallel software crisis’, in which the hardware becomes ever more capable but the software remains hard to develop, debug, optimize and evolve. Much of the effort expended on parallel software is spent rediscovering core concepts such as coordination, communication, and synchronization, and reinventing common components such as active objects, dynamic load balancers, job schedulers, message brokers and notification engines. Moreover, despite advances in key technologies, such as concurrent programming languages, vectorizing and optimizing compilers, operation system clustering techniques and grid computing middleware, many software developers lack experience of how and when to best apply these technologies.
 

 Addressing the parallel software crisis therefore requires more than just adopting the latest technologies it requires learning and applying successful parallel software patterns that document recurring architectures and designs and convey proven parallel software structures, algorithms and best practices. Knowledge of patterns helps researchers and practitioners to avoid rediscovering and reinventing core concepts and common components of parallel software. Patterns can also explain how and when to best apply parallel technologies.


 Popular patterns such as Adapter, Bridge, Reactor and Strategy have captured and guided the designs of application and infrastructure software for two decades. Many of these patterns were identified initially by developers of object-oriented graphical user interface frameworks that work in contexts where quality factors like usability, extensibility and portability are paramount. In addition to these quality factors, developers of parallel software must also understand and apply patterns that work in context in which low latency and high throughput, reliability and scalability are paramount.

Over the year, isolated coverage of parallel software patterns has appeared in various conference proceedings and book. For example, those associated with the Pattern Languages of Programming ( PLoP ) conferences present patterns for scalable locking and communication. Likewise, the Pattern-Oriented Software Architecture( POSA) series of books presents patterns for pipeline parallelism, master/slave processing, distributed request brokering and dynamic resource management. Until Jorge Ortega-Arjona published this book on pattern for parallel software design, however, no single source provided such a broad and deep spectrum of architectural patterns, design patterns and common idioms for developing parallel software.

Popular patterns such as Adapter, Bridge, Reactor and Strategy have captured and guided the designs of application and infrastructure software for two decades. Many of these patterns were identified initially by developers of object-oriented graphical user interface frameworks that work in contexts where quality factors like usability, extensibility and portability are paramount. In addition to these quality factors, developers of parallel software must also understand and apply patterns that work in context in which low latency and high throughput, reliability and scalability are paramount.

 The patterns and idioms that Jorge present in this book help to resolve key parallel software challenges such as coordinating interaction between concurrently executing task, partitioning parallel algorithms and data to improve performance substantially, and minimizing synchronization overhead in local and distributed shared memory. In addition to describing the structure and functionality of essential parallel software patterns and idioms, Jorge also presents many examples from a range of applications domains, including high-performance scientific computing, image processing and animation rendering. Moreover, Jorge’s detailed case studies extend the book beyond a catalog of parallel software patterns to provide keen insights into parallel software design processes and methods that help alleviate key accidental and inherent complexities in parallel software development projects.

For parallel software development to develop from an art to an engineering discipline, successful practices and design expertise must be documented systematically and disseminated broadly. My colleagues and I have documented and applied patterns in a wide range of distributed and parallel application and infrastructure software, including the ACE, TAO and Zircomp middleware. We’ve found that studying and applying patterns helps to:

n  Facilitate reuse of architecture and design artifacts, which reduces the effort required to develop high-quality parallel software frameworks and application components. These patterns can be reused even when reuse of algorithms, implementations, interfaces or detailed design is not feasible due to heterogeneous software and hardware platforms.

n  Document ‘best practices’ of parallel software systems, which have traditionally resided in the minds of expert developers or buried within complex source code. Capturing the most useful strategies and tactics of parallel software in terms of patterns makes the learning curve for new developers more gentle, by giving them good role models for developing parallel software applications and infrastructure.

n  Preserve important design information, which is often lost over time in conventional development processes, causing increased maintenance costs and software defects. Software evolution effort can thus be reduced significantly by documenting the intent, structure and behavior of parallel software components in terms of the patterns they reify, as well as explaining how and when to best apply these components in various contexts.

n  Guide design choices for new systems, since patterns capture proven experience in a from that can be used to address new design challenges. By understanding the potential traps and pitfalls in their domains, developers can select suitable parallel software architectures, protocols and platform features without wasting time and effort implementing solutions that are known to be inefficient or error-prone.

 

 A thorough understanding of the parallel software patterns, processes and methods in Jorge’s book will help you develop better parallel software applications and infrastructure likewise. If you want a thorough coverage of the key pattern-oriented software architectures that are shaping the next-generation of parallel software, then read this book. I’ve learned much from it and I’m confident that you will too.

 
 

Douglas C. Schmidt

Nashville, Tennessee, USA

 

 


 

'번역 > Patterns For Parallel Software Design' 카테고리의 다른 글

차례  (0) 2011.10.17
앞 표지, 뒷 표지 내용  (0) 2011.10.16
도전! Patterns for parallel software design  (0) 2011.10.16
:

[POSA1] Broker Architecture Pattern

소프트웨어 공학/설계 | 2011. 10. 7. 17:04 | Posted by youGom
1.
여기에서 핵심 클래스는 Broker Class다.
Broker 클래스는 Client, Server에 접근하고, Client Proxy, Server Proxy에 접근한다.
Bridge 클래스를 통해 세부 구현을 숨길수도 있으며, 다른 브로커에 접근할 수 있다.

2.
Broker는 등록되어진 Client와 Server를 안전하게 연결해 준다.
Client는 본인이 사용하는 하나의 어플리케이션으로 볼수 있다.
Server는 서비스를 제공하는 하나의 매개체다.
Client/Server Proxy는 부가적인 데이터 처리를 해준다.

3.
포사에 적혀 있는 내용을 압축하면 위와 같이 정리된다.
POSA 책을 봐도 잘 이해 안가는걸 한번 더 압축하니, 첨 본 사람은 더욱 어리둥절 할 수 있다.


4.
우리 생활에 가까운 것으로 예를 들면 개념을 이해 하는데 도움이 된다.

a. 우리는 크롬을 켠다. ( ex. www.google.com )
b. 검색을 한다. ( ex. 김태희 )
c. 검색 목록이 뜬다. ( ex. 알흠다운 김태희 기사와 사진들~ *_* 므흣..! )
d. 김태희 기사를 본다.
e. 김태희 홈페이지를 들어간다. 
f. 홈페이지가 제대로 안뜨길래, 익스플로러로 김태희 홈페이지로 들어갔다.
g. 에러 없이 모든 내용을 볼 수 있다.


5.
위 내용을 가지고 Broker 패턴을 이해 할 수 있다.

a. Client 1 :    우리는 크롬을 켠다. ( ex. www.google.com )
b. Broker :      검색을 한다. ( ex. 김태희 )
c. Sever-List : 검색 목록이 뜬다. ( ex. 알흠다운 김태희 기사와 사진들~ *_* 므흣..! )
d. Server 1 : 김태희 기사를 본다.
e. Server 2 : 김태희 홈페이지를 들어간다. 
f. Client 2 :  홈페이지가 제대로 안뜨길래, 익스플로러로 김태희 홈페이지로 들어갔다.
g. Server 2 : 에러 없이 모든 내용을 볼 수 있다.


6.
추가 설명이 필요한 분들을 위해, 부가적인 설명을 덧 붙이겠다.

Client 브라우저다. 브라우저는 크롬과 익스플로러이고, 파이어폭스나 모질라도 가능하다.
Broker는 김태희 정보가 있는 서버 정보를 검색하는 역할을 한다.
Server는 본인이 원하는 서버들 중 하나를 선택해서 접근하는 것이다.
 ( 여기서 site 주소를 실제 서버 IP로 연결해주는게 DNS 인데, DNS도 브로커로 볼 수 있다. )
연결된 Server는 본인이 켜둔 Client 브라우저로 정보를 Reponse해주는 것이다.


7.
Proxy는 추가적인 데이터처리를 위해 추가 할 수 있다. 특히 Intranet을 사용할 때, Proxy Server는 필수가 된다.
일반적으로 Proxy 옵션을 따로 설정하진 않는다.


8.
가벼운 소재를 가지고, 쉽게 풀어 보았다.
혹시라도.. 설명에 부족한 부분이 있다면, 댓글을 조심히 부탁드린다.


9.
Broker 패턴에 대한 정확한 정보는 아래 주소로 가면, POSA 내용을 엿볼 수 있다.
 http://thisisliving.tistory.com/category/Studying/Pattern-Oriented%20Software%20Architecture


 

'소프트웨어 공학 > 설계' 카테고리의 다른 글

[수강후기] CBD, Component Based SW Design  (0) 2012.09.02
Bada App - FrameWork Concept  (0) 2011.09.21
: