블로그 이미지
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

 
 


강의 제목 : CBD ( Component Based SW Design )
강사 : 부산대 채흥석 교수


여기에 적는 수강 후기 내용은
참고 자료 없이 강의 완료( '12. 08. 31 ) 후 3일 후인 오늘 ( '12. 09. 02 )  기억에 남는 부분을 적은 내용이다.

SW 설계할 때, OO의 관점으로 바라 보았다.
Component는 그런 OO를 기능의 한 묶음으로, 좀 더 큰 범위로 응집해 SW를 설계 할 수 있다는 것을 이해했다.
기존에 알고 있었던, 어쩌면 추측 했었던 Component란 개념을 새롭게 알 수 있었던 좋은 기회였다.

교수님이 보내주신다는 CBD 책을 한번 더 읽어보고, 블로그에 좀 더 구체적으로 정리해볼 생각이다.
그 다음에 더 상위 레벨인 Product Line에 대해서 관심을 가져야겠다.
Domain Design보다 Product Line이 Component 기반설계보다 좀 더 큰 범위의 설계라 하셨다.

Component에 대한 핵심, 범위, 요구사항, 설계, 검증, 구현에 대해 간략히 적었다.
그리고 중간에 컴포넌트에서 중요시 하는 Interface에 대한 내용도 적었다.


[ 핵심 ]
* CBD의 핵심은 인터페이스다.
* CBD는 추상화가 되지 않는다.
* 그러나 인터페이스는 추상화나 상속이 가능하다.

[ Component 범위 ]
* 메소드와 특성을 하나의 연관성으로 집합 한 것이 클래스다.
* 그 클래스를 사용 가능한 단위로 집합한 것이 컴포넌트다.

[ Interface 사용 ]
* 컴포넌트는 인터페이스를 통해 연결된다.
* 정확히 말하자면, 인터페이스는 포트와 연결되며, 컴포넌트는 포트를 통해 인터페이스를 사용할 수 있다.

-> 컴포넌트1 - 포트1 - 인터페이스 - 포트2 - 컴포넌트2

* 포트라는 개념은 현재 언어에서 지원되는 것이 없다. 비슷하게 흉내내어 구현해야 한다.

* 포트라는 개념은 기존에 없던 새로운 개념이다.

* 포트를 예를 들어 설명하자면, 컴퓨터 본체에 있는 Keyboard포트, 모니터포트, 프린터 포트등을 생각하면 된다.

-> [ 모니터에 있는 D-SUB포트 ] 와 [ 본체에 있는 D-SUB 포트 ] 는 [ 모니터 Connecter ] 로 [ 서로 약속된 Data Interface ] 통해 GUI가 화면이 Display되는 것이다.

* 부가적인 설명으로, OO에서 일고 있던 인터페이스 개념과 유사하다, 하지만 포트와 맞물려 사용되기 때문에 OO에서 사용된 인터페이스와 같다고 할 수 없다. 새로운 관점에서 접근해야 한다.


[ Component RM ]

* 기존 OOAD 기법과 유사하게 적용할 수 있다. 

* 용어 선택에 주의해야 한다.

* UseCase를 사용하면 좋다.

* Actor와 UseCase의 개념을 잘 알아야 한다.


[ Component 설계 ]

* 필요에 따라 Class, Sequence, Community 등의 여러 다이어그램을 사용해서 분석하고 설계하는 게 좋다.

* Class, Method, Attribute, Stereo type 등을 명시 할 때, 추상적 / 명시적 / 묵시적인 단어를 적절히 사용해야 한다. 이 부분이 생각보다 어렵다.

* 단어 선택에 미숙할 때에는 리팩토링 관련 ( Refactorying ) 책을 참고하는 것이 도움이 된다. 그 종류의 책에서 이름 명명과 고치는 방법에 대해서 자세히 나와있다.


[ Component 설계 검증 ]

* 코드를 작성한 뒤에만 검증 하는 것이 아니다.

* 요구 사항 및 설계 단계도 검증이 필요하다.

* 일반적으로 Sequence나 Community를 사용해 기능적인 흐름에서 이상이 없는 지 파악한다.

* class 이름, method이름, stereo type의 명칭을 보았을때, 다른 사람이 내 생각과 일치 하는지 확인해야 한다.

* 설계도는 추상적이지 않으며, 매우 구체적으로 나와야 한다. 또한 모든 사람이 공통으로 보아야 하는 내용이므로 명확하고 이해하기 좋은 용어와 다이어그램이 구체적으로 상세히 작성되어야 한다. 

* 필요에 따라 각 다이어그램에는 설명을 해주는 메모가 필수적으로 있어야 한다.


[ Component 구현 ]

*  Component 는 OO( Object Oriented ) 를 적용하여 적용 가능하다.

*  Component 는 OO가 필수적인 요소는 아니다. 구현 수단의 한가지다.

* OO의 구현의 경우, 예를 들어 설명하면, 

 OO를 구현하기 위해 C++은 추상클래스와 Virtual Method를 주로 이용한다.

 OO를 구현하기 위해 C는 Structure와 Static 연산자 그리고 함수 포인터를 사용한다.

* Component의 경우, 예를 들어 설명하면,

 CBD를 구현하기 위해 C++은 Virtual Method를 주로 이용할 수 있다.

 CBD를 구현하기 위해 C는 함수 포인터를 사용할 수 있다.


[ Component 배포 ]

* CASE Tool에서 지원해주는 Generate 를 사용하여 각 개발 환경에 맞는 언어로 배포할 수 있다. 블랙박스 테스트 수준의 코드가 작성되며, 그 이상은 구현자가 실행 플랫폼에 맞게 구현해 주어야 한다.





***

확실히 전공 교수님이라 정확한 개념과 상세한 설명을 해주시는 것 같다.

부족하고 모호했던 부분들을 채워 주신점에 대해 감사의 말씀을 전하고 싶다.

정말 즐겁고 유익한 한주였다.




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

[POSA1] Broker Architecture Pattern  (0) 2011.10.07
Bada App - FrameWork Concept  (0) 2011.09.21
:



모르면 손해보는 국민연금 활용하기


안상헌 저, 경향미디어 출판





- 국민연금 보혐료의 기준은 소득 기준이다. 건강 보험료는 재산 기준으로 납부 한다.

- 120개월 납부해서 60세 이상부터 연금으로 매달 20만원씩 받을 수 있다. 120개월 미만일 경우, 일시금으로 받게 된다.

- 퇴직 후, 1년 뒤 재취직했다면, 그 공백기간을 국민연금공단에 예외 신청할 수 있다.

- 연금 가입 기간이 길 수록 좋다.

- 해외 이민 시, 이제까지 납부 했던 연금고 이자를 일시금으로 받을 수 있다는 원칙이 있다.

- 안락한 노후 ' 내연금 ( csa.nps.or.kr ) ' 에서 재무 설계 도움을 받을 수 있다.




:

서문

번역/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
:

차례

번역/Patterns For Parallel Software Design | 2011. 10. 17. 13:25 | Posted by youGom
- 불펌 하시면 안됩니다. ^^ [ yougom.com ] -


서문

저자서문
저자에 대해
감사글
기고자 일대기

챕터 1.
소프트웨어 패턴
소프트웨어 패턴의 개념
패턴 서술, 구성, 분류
요약

챕터 2.
병렬 프로그래밍에 쉽게 접근하기
병렬 프로그래밍
병렬 프로그램 수행에 영향을 미치는 요인
병렬 프로그래밍의 장점과 단점
요약

챕터 3.
병렬 프로그래밍을 위한 아키텍쳐 패턴
병렬 파이프 & 필터
병렬 레이어
선형 요소 전달하기
매니저-워커
공용 자원
요약

챕터 4.
통신 컴포넌트의 디자인 패턴
공용 가변 파이프
복합적인 지역( Local ) 호출
메시지 전달 파이프
복합적인 원격 호출
공용 가변 채널
메시지 전달 채널
지역 랑데뷰
원격 랑데뷰
요약

챕터 5.
동기화 메커니즘의 표현식 ( Idiom )
세마포어
크리티컬 영역
모니터
메시지 전달
원격 프로시저 호출
요약

챕터 6.
두가지 사례 연구
혈관 세분화
조절 가능한 3D 그리드 기반 오일러( 기체역학의 ) 프로그램
요약

챕터 7.
병렬 소프트웨어 디자인
일반적인 병렬 소프트웨어 디자인 프로세스
패턴 기반 병렬 소프트웨어 디자인 방법
문제 분석
조직화 ( Coordination ) 설계 - 아키텍쳐 패턴
통신 ( Communication ) 설계 - 디자인 패턴
세부 설계 - 표현식 ( Idiom )
구현과 진화
요약

챕터 8.
병렬 소프트웨어 아키텍쳐
병렬 소프트웨어 아키텍쳐의 정의
병렬 소프트웨어 디자인
요약

챕터 9.
병렬 프로그래밍 패턴의 방향
소프트웨어 설계의 상황
설계 지식과 기술
병렬 소프트웨어 시스템의 실제 서술
병렬 소프트웨어 설계 측정의 필요성

용어 사전

표기법

참조 문헌

패턴 색인

색인


















------------------------------------ 원문 -----------------------------------------


Foreword


Preface
About the Author
Acknowledgements
Contributor Biography

Chapter 1
Software Patterns
The Concept of a Software Pattern
Pattern Description, Organization and Categorization
Summary

Chapter 2
A Brief Introduction to Parallel Programming
Parallel Programming
Factors that Influence the Performance of a Parallel Program
Avantages and Disavantages of Parallel Programming
Summary
Chapter 3
Architectural Patterns for Parallel Programming
Parallel Pipes and Filters
Parallel Layers
Communicating Sequential Elements
Manager-Workers
Shared Resource
Summary
Chatper 4
Design Patterns for Communication Components
Shared Variable Pipe
Multiple Local Call
Message Passing Pipe
Mulple Remote Call
Shared Variable Channel
Message Passing Channel
Local Rendezvous
Remote Rendezvous
Summary

Chapter 5
Som Idioms for Synchronization Mechanisms
Semaphore
Critical Region
Monitor
Message Passing
Remote Procedure Call
Summary

Chapter 6
Two Case Studies
Blood Vessel Segmentation
Adaptive 3D Grid-Based Eulerian ( Gasdynamic ) Program
Summary

Chapter 7
Parallel Software Design
A General Parallel Software Design Process
A Pattern-Based Parallel Software Design Method
Problem Analysis
Coordination Design - Architectural Patterns
Communication Design - Design Patterns
Detailed Design - Idioms
Implementation And Evaluation
Summary

Chapter 8
Parallel Software Architecture
A Definition of Parallel Software Architecture
Parallel Software Design
Summary

Chapter 9
Directions in Patterns for Parallel Programming
The Situation in Software Design
Design Experience and Techiques
A Tangible Description for Parallel Software Systems
The Need for Measurement in Parallel Software Design
Final Remarks


Glossary

Notations

References

Index of Patterns

Index


 

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

서문  (0) 2011.10.17
앞 표지, 뒷 표지 내용  (0) 2011.10.16
도전! Patterns for parallel software design  (0) 2011.10.16
:
- 무단 불펌 하시면 안됩니다. ^^ [ yougom.com ] -


[ 앞표지 ]

Patterns for Parallel Software Design
병렬 소프트웨어 설계를 위한 패턴

Jorge Luis Ortega-Arjona 
저자. 조지 루이스 오르티가-아르조나 


[ 뒷표지 ]

Patterns for Parallel Software Design is essential reading for developers looking to understand patterns for parallel programming.
병렬 소프트웨어 설계 패턴은 병렬 프로그래밍 패턴들을 습득하려는 개발자들이 필수적으로 읽어야 합니다.



Written from an architectural point of view, Patterns for parallel Software Design presents a pattern-oriented software architecture approach to parallel software design providing solutions in concurrent and distributed programming, based on existing design knowledge.

저자는 아키텍쳐 관점에서, 병렬-소프트웨어-설계-패턴을 기존 설계 지식에 기반하는 동시처리와 분산처리 프로그래밍의 해결책으로 병렬-소프트웨어-설계를 패턴-지향-소프트웨어-아키텍쳐로 접근 합니다.



A pattern-oriented approach to parallel software design is not a design method in the classic sense,
but a new way of managing and utilizing existing design knowledge for designing parallel programs.
 Using this approach leads to parallel software systems that are modular, adaptable, understandable and evolvable.
Thus, this method aims to enhance not only build-time properties of parallel systems, but also their run-time properties.

패턴 지향적 병렬 소프트웨어 설계는 클래식한 설계법이 아니지만, 병렬 프로그래밍을 설계하는 기존 설계 지식을 활용하고 관리하는 새로운 방법입니다. 이를 활용해 접근한다면 모듈화되고 적응력( adaptable )있으며 이해하고 쉽고 진화적인 병렬 프로그램 설계로 이끌어 낼 수 있습니다. 이와 같은 방법들은 병렬 시스템의 빌드타임 속성뿐만 아니라, 런타임 속성 향상에 도움을 줍니다.



Key topics include :
 - Use of known solutions in concurrent and distributed programming, applied to the development of parallel programs.
 - Significant architectural patterns that describe how to divide an algorithm and/or data to find a suitable partition, and hence, link it with a programming structure that allows for such a division.
 - Delivers proven solutions to the problems faced by parallel programmers.

주요 주제는 다음과 같습니다.
 - 동시 및 분산 프로그래밍에 알려진 해결책은 병렬 프로그램 개발에 사용됩니다.
 - 어떻게 알고리즘과 데이터를 구분할 것인가, 어떻게 적절한 분할 영역을 찾을 것인가에 대해 묘사해주는 중요한 아키텍저적인 패턴 입니다. 게다가, 분할 구조로 하는 프로그래밍과 관련이 있습니다.
 - 병렬 프로그래밍에 직면한 문제들의 입증된 해결책을 제시합니다.



Coverage is aimed at developers new to parallel programming, who require a base to understand parallel software design and implementation for future parallel platforms. Patterns for Parallel Software Design is an essential must-have guide for developers and programmers who want to solve unique design problems.

이 책은 병렬 소프트웨어 설계의 기본적인 이해와 미래적 병렬 플랫폼을 위한 구현을 요구하는 개발자에게 새로운 병렬 프로그래밍을 하도록 하는 것입니다. 병렬 소프트웨어 설계 패턴은 고유의( Unique ) 설계 문제들을 풀고 싶어 하는 개발자들과 프로그래머들에게 필수로 지니고 있어야 할 안내서입니다.

 

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

서문  (0) 2011.10.17
차례  (0) 2011.10.17
도전! Patterns for parallel software design  (0) 2011.10.16
:

Bada App - FrameWork Concept

소프트웨어 공학/설계 | 2011. 9. 21. 13:20 | Posted by youGom

장점.
1. FrameWork의 일관성이 유지되어, 개발 시 상호간 인터페이스에 대해 오해의 소지가 사라진다.
 - 다른 모듈에 대해서 Request만 하면 된다. 다른 모듈에 대한 이해가 필요 없다.
2. Framework의 일관성에 대한 개념을 이해하면, 모든 Framework에 대해 이해가 가능해진다.
3. 최소한의 단위로 테스트가 가능하다. ( 모든 코드는 테스트 되어 진다. )
4. 검증팀에서 검증하기 전에, 버그에 대한 진단이 자동화 테스트에 의해 자동으로 감지 된다.
5. 컴파일 시간이 줄어든다. ( 기능 추가가 될수록 파일 추가 및 수정이 잦아지는데, h파일을 수정하더라도, 전체 컴파일을 하지 않는다. 즉, 코드 결합도가 굉장히 낮다. )

단점.
1. Framework에 맞추어 개발하기 위한 대한 기본 이해가 필요하다. ( 구현하기 위한 진입 장벽이 높으나, 타 모듈 개발자가 사용하기엔 편하다. )




현황.
아래 코드는 테스트완료된 코드이며, 실질적으로 사용가능하다.
이 Framework 코드는 Bada SDK 코드에 종속적이며, 다른 플랫폼에서는 사용이 불가하다.

[ 앱의 시작 ]
way 1. GetManager( _C( "ManageForms" ) )->Request( _C( "FormStartDevMode" );
way 2. GetFormMgr()->Request( _C( "FormStartDevMode" );

[ 데이터 요청 ]
way 1. GetManager( _C( "ManageDB" ) )->Request( _C( "CreateDB" ), 0, pCompleteListener );
way 2. GetDBMgr()->Request( _C( "CreateDB" ), 0, pCompleteListener );

[ 데이터 처리 ]
way 1.  GetManager( _C( "ManageFilter" ) )->Request( _C( "FilterMessage" ), FILTER_MESSAGE_NORLMAL, pCompleteListener );
way 2. GetFilterMgr()->Request( _C( "FilterMessage" ), FILTER_MESSAGE_NORLMAL, pCompleteListener );


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

[수강후기] CBD, Component Based SW Design  (0) 2012.09.02
[POSA1] Broker Architecture Pattern  (0) 2011.10.07
:

농지에서 대지로 바꾸는 방법

투자 활동/부동산 | 2011. 9. 21. 13:06 | Posted by youGom

농지에서 대지로 직접 바꿀수는 없습니다.

우선 전용허가를 받은다음 집을짓고 준공이 난 다음에 대지로 지목변경을 할수 있습니다

그리고 님의 말씀처럼 시설물을 모두 치워야 합니다.

 

 대략 설명을 드리겠습니다.

 

1.설계사무소에 전용허가 의뢰를 해야 합니다.

이유:예를들어 500평 땅이 있다면 그땅 어느 위치에 몇평을 대지로 설정 할것인지와 대지까지 진입로를   설계하여 첨부 하여야 하며 주택 평면도를 그려 설계된 대지 어느 위치에 짓겠다는 설계도 까지 첨부   해야 합니다.

그리고 현황측량까지 해야 합니다.

 

2. 의뢰 비용은 약 2~300 듭니다.

   그리고 전용부담금을 내야 합니다.(공시지가의 30%)

 

3.개발행위허가증이 나오면 1년 이내에 착공을 해야 합니다.

 

4.집을짓고 준공이 난 다음에 비로서 대지로 지목변경이 가능합니다.

이런 절차를 거쳐야 합니다.


출처 : ( 지식인 ) http://kin.naver.com/qna/detail.nhn?d1id=4&dirId=402&docId=123855969&qb=64aN7KeAIOuMgOyngA==&enc=utf8&section=kin&rank=2&search_sort=0&spq=0&pid=gFDmlc5Y7uCssulZ5Msssc--509414&sid=TnlgvP1WeU4AAFNGBWI

: