The Past, Present, and Future of Software Architecture 재사용 방법론 권오현.

Slides:



Advertisements
Similar presentations
CI(Continuous Integration) 이학성. C ontinuous I ntegration? 2 지속적으로 품질관리 를 적용하는 과정 개발자가 기존 코드의 수정 작업 을 시작할 때, 코드 베이스의복사본을 받아서 작업을 시작하면서 코드의 변경.
Advertisements

프로그래밍언어론 TA 윤들녁. 소개 윤들녁 연락처 : 공대 7 호관 4 층 401 호 데이터베이스 연구실 실습 후 날짜 _ 학번.zip 으로.
Cinema Manager System 최종 발표 조 team05 발표자 : 임 창목 1.
Big Data & Hadoop. 1. Data Type by Sectors Expected Value using Big Data.
© Ian Sommerville 2004Software Engineering, 7th edition. Chapter 8 Slide 1 System models 배재대학교 멀티미디어 정보공학 연구실 발표자 : 이 상 조
.Net History. Visual Studio.Net 2002 /.Net Framework 1.0 제품의 버전 / 특징 2002 년 - Visual Studio.Net 2002 /.Net Framework 1.0 첫 통합 개발 환경 - C# 언어 등장 (C# 1.0)
항공 예약 시스템 1 조 ( 김민철, 김영주, 이혜림, 장유정, 조윤주, 문하늘 ). 목차 차세대 전산시스템 도입의 필요성 현재 항공 시스템 ( 대한항공 ) 항공 시스템의 변화 미래항공 시스템.
신입생 Study 커리큘럼 OneScore. Contents 후니의 시스코 네트워킹 (4 주 ) 01/ Network 생활코딩 – 웹 서비스 만들기 (4 주 ) Wowhacker 웹 게임 (4 주 ) 02/ Web 뇌를 자극하는 윈도우 시스템 프로그래밍 (4 주 ) 리버싱.
Dept. Computer Science, Korea Univ. Intelligent Information System Lab. 웹 서비스와 시멘틱 웹의 연동 방안 연구 고려대학교 지능정보시스템 연구실 이 윤 수.
컴퓨터와 인터넷.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
Security Solutions (S/W) - Fortify
Power Java 제3장 이클립스 사용하기.
4강. Servlet 맛보기 Servlet 문서 작성 하기 web.xml에 서블릿 맵핑 어노테이션을 이용한 서블릿 맵핑
최윤정 Java 프로그래밍 클래스 상속 최윤정
Entity Relationship Diagram
Web Service Computing and Practice_
제 09 장 데이터베이스와 MySQL 학기 인터넷비즈니스과 강 환수 교수.
PHP입문 Izayoi 김조흔.
JSP Programming with a Workbook
4장. 웹로직 서버상에서의 JDBC와 JTA의 운용
11 장 LAN 기본 개념과 Ethernet LAN
Visual Basic .NET 처음 사용하기.
시스템 설계와 산업디자인 개발.
1. C++ 시작하기.
C++ Programming: Sample Programs
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
모바일 자바 프로그래밍 JDBC / WAP Ps lab 오민경.
KHS JDBC Programming 4 KHS
Chapter 03 : 서블릿 ( Servlet ) 개요. chapter 03 : 서블릿 ( Servlet ) 개요.
제 01 장 인터넷 프로그래밍 개요 학기 인터넷비즈니스과 강 환수 교수.
SK Telecom 매출 통계 시스템의 SQL Server Reporting Services 적용사례
3강. JSP 맛보기 JSP 문서 작성 하기 JSP 아키텍처 Lecturer Kim Myoung-Ho Nickname 블스
2장. 데이터베이스 관리 시스템 데이터베이스 관리 시스템의 등장 배경 데이터베이스 관리 시스템의 정의
Spring 프레임워크의 이해 1.Architecture.
소규모 IPTV 사업자용 실시간 미디어 플랫폼 기술
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
Smart Workplace 개발자 가이드
Ajax 활용 – Ajax 개요 2008 고급 XML 프로그래밍 임순범.
ASP.NET AJAX / AJAX Control Toolkit 응용 2008 컴퓨터공학실험( I )
웹디자인
Chapter 03. 관계 데이터베이스 설계.
AUTODESK AUTOCAD ELECTRICAL 전기제어 2D 설계 소프트웨어 표준기반 설계 생산성 도구 구조도 설계
04. DBMS 개요 명지대학교 ICT 융합대학 김정호.
LabVIEW WiznTec 주임 박명대 1.
데이터 베이스 DB2 관계형 데이터 모델 권준영.
웹사이트 분석과 설계 (화면 설계) 학번: 성명: 박준석.
07. 소프트웨어 아키텍처 설계 전략 명지대학교 융합소프트웨어학부 김정호 교수.
컴퓨터 소프트웨어 설계 및 실험 년 1학기 실험계획 -.
Self Introduction Template PowerPoint
소프트웨어 중심에 존재하는 복잡성 에 도전장을 내밀다
“ Presenworks by workerplex
Introduction to JSP & Servlet
컴퓨터 소프트웨어 설계 및 실험 년 1학기 실험계획 -.
2D 게임프로그래밍 프로젝트 발 록 런 김대호.
SNS마케팅 트렌드 사회복지공동봉사회 유영진 참고: 사례.
웹 애플리케이션 보안 Trend 인포섹㈜ 신수정 상무
(Wed) Hyun Woong Nam.
01. 분산 파일 시스템의 개요 네트워크에 분산된 파일을 사용자가 쉽게 접근하고 관리할 수 있게 해준다.
Map Designer Solution 소개자료
발표자 : 이지연 Programming Systems Lab.
08. 소프트웨어 아키텍처 설계 전략 명지대학교 융합소프트웨어학부 김정호 교수.
Soft computing Laboratory
.Net FrameWork for Web2.0 한석수
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
교량 구조물의 개념 설계 및 프로토타입 제작 과정
학부 컴퓨터공학부 교육과정 (학부) 2학년 4학년 3학년 1학년 1학기 2학기 IPP 자격과정 전공트랙
1. 강의 소개 컴퓨팅적 사고와 문제해결.
소프트웨어 설계 및 실습 강기준.
VAULT BASIC / VAULT PROFESSIOAL
Presentation transcript:

The Past, Present, and Future of Software Architecture 재사용 방법론 권오현

Index Index of Article  What is software architecture  A brief history of software architecture  Where are we now?  The articles in this issue  Future

What is software architecture The structure and organization by which modern system components and subsystems interact to form systems The properties of systems that can best be designed and analyzed at the system level 소프트웨어 아키텍처는 다음과 같은 요소들을 포함  소프트웨어 디자인  소프트웨어 재사용  소프트웨어 공학  엔터프라이즈 아키텍처  리버스 공학  요구사항 공학  품질

What is software architecture Paul Clements lists several definitions on the Software Engineering Institute’s architecture practices site 

What is software architecture Paul Clements lists several definitions on the Software Engineering Institute’s architecture practices site  John Carter (Software Technologist) 디자인에서의 기묘한 일관성과 동질성이 재사용성을 높일 수 있도록 도와주는 것  Giovanni Godena (Software engineer) 재사용성을 높이기 위해서 우리는 우리가 목표로 하는 도메 인의 산출물들을 잘 사용해야 한다. 이러한 산출물들과 이들 간의 관계는 아키텍처로 정의가 되어 있을 것이다. Software Architecture 는 이들을 성공적으로 재사용하기 위해서 사용한 다.

What is software architecture Paul Clements lists several definitions on the Software Engineering Institute’s architecture practices site  Praveen Joshi (Team Leader, LG Soft India) Software Architecture 는 잘 정리된 규칙들과 시스템의 구조를 정의하기 위한 프로토콜로 구성된 프레임워크이다. 잘 정의된 아키텍처는 심플하고 더 나은 삶으로 인도한다. 이것은 다양 한 복잡도와 종류, 크기를 가진 기능들을 실제 실행 단계로 인 도한다. 잘 설계된 아키텍처는 그리하여 소프트웨어 구성요소 들의 재사용성을 극대화한다.

What is software architecture Subareas of the software architecture  Architectural design 어떻게 아키텍처를 만들 것인가 ?  Analysis 우리가 아키텍처를 기반으로 최종적인 상품의 확실한 품질에 관한 문제들을 어떻게 답할 것인가 ?  Realization 우리가 아키텍처 기술 내용을 기반으로 시스템을 어떻게 생 산할 것인가 ?  Representation 어떻게 사람이나 기계들이 의사소통할 수 있는 확실한 결과 물들을 생산할 것인가 ?  Economics 어떤 아키텍처 이슈들이 기업의 의사결정을 이끌어 내는가 ?

A brief history of software architecture Pre-1995  1969 NATO 에서 Software architecture 라는 구문을 처음 사용  Until the late 1980s “Architecture” 라는 단어가 컴퓨터 시스템의 물리적인 구조를 나타내는 뜻으로 널리 쓰임  간혹 컴퓨터의 명령어 집합 등으로도 사용  1990s 명확한 분야로써의 Software Architecture 의 컨셉이 확립 Winston W. Royce, Walker Royce 는 1991 년, 저서인 Systems Architecting: Creating and Building Complex Systems 에서 처 음으로 기술과 프로세스 사이에서의 Software Architecture 의 위치를 제시함

A brief history of software architecture Pre-1995  1990s {elements, forms, rationale} = software architecture  요소 (Elements): 프로세싱 요소, 데이터 요소, 연결 요소  표현법 (Forms): 속성과 관계  근거 (Rationale): 아키텍처를 정의하는데 고려되어지는 다양한 선택에 대한 근거 ( 기능성, 성능, 신뢰성, 경제성 )  당시 존재했던 많은 Architecture Description Languages (ADLs) 들의 기본으로 사용됨 C2, Rapide, Darwin, Wright, ACME, Unicon… 1994 년, IBM 에서 Software architecture 에 관한 첫 번째 도서 출판

A brief history of software architecture  1995 년을 기점으로 Software Architecture 에 관한 연구나 산업 전 반에 걸친 적용이 가속화됨  Software Architecture Analysis Method (SAAM) Software Engineering Institute (SEI) 에서 개발 Software Architecture 를 평가하기 위한 첫 번째 방법론 수정가능성 (Modifiability) 관점에서 평가 및 분석 아키텍처 기술서와 품질 속성을 설명하는 시나리오를 통해 시나리오와 아키텍처간의 매핑 테이블 등의 산출물을 생성

A brief history of software architecture  Software Architecture Analysis Method (SAAM) 시스템이 지원해야 하는 모든 기능성에 대해서 도출  시스템의 주요 사용  시스템의 사용자  미래의 변경 가능성  시스템이 지원해야 하는 품질 속성 시나리오 개발 ( 브레인 스토밍 ) => 분류 및 우선순위 결정 ( 투 표 ) => 시나리오와 아키텍처 맵핑 => 시나리오간 상호작용 평가 => 전체 평가

A brief history of software architecture  다양한 Multiple View 나 디자인 패턴들이 개발됨  Nokia, Philips, Nortel, IBM 등 거대 개발 회사들이 Software Architecture 나 Software Product Line Architectures 를 조사하기 위한 Reuse Community 에 대해 관심을 기울이기 시작

A brief history of software architecture  Software Architecture 의 첫 번째 IFIP 컨퍼런스가 1999 년에 개최  Architecture Description Markup Language Architecture Description 을 위해 Open Group 이 소개 XML 기반 Architecture Description Language 아키텍처 모델의 광범위한 공유를 지원하기 위한 목적  Software Product Line 이 기본 원칙으로 탈바꿈  새로운 아키텍처 방법론들의 대두 BAPO, ATAM, etc… IEEE 는 RMODP 와 IEEE1471 을 기본 아키텍처 표준으로 사용  Software Architecture 에 관한 새로운 책들이 계속해서 출판

A brief history of software architecture  재사용 효과, Process pattern, p46 효과적인 재사용에 관한 제시

 재사용 효과, Process pattern, p46 Domain-component Reuse  미리 빌드된, 넓은 범위의 도메인 컴포넌트의 재사용 Pattern Reuse  패턴의 재사용 Artifact Reuse  이전 개발에서 사용한 Use Case 나 표준 문서, 도메인 상 세, 산출물 가이드라인 등의 재사용 Framework Reuse  공용 기술이나 비즈니스의 기본 기능성을 공유하는 클래 스 컬렉션의 재사용 A brief history of software architecture

 재사용 효과, Process pattern, p46 Component Reuse  미리 빌드된, 캡슐화된 컴포넌트의 재사용 Template Reuse  산출물 및 문서, 모델이나 소스코드의 템플릿을 재사용 Inheritance Reuse  존재하는 클래스를 상속하여 쓰는 재사용 Code Reuse  소스코드의 재사용 A brief history of software architecture

아키텍처 표준화 아키텍처 표준화의 필요성  다양한 모델간의 메시지 교환, 재사용성을 강화 아키텍처 = 다양한 관점에서의 모델들로 구성 여러 사용자들의 요구사항들간의 격차를 줄임 아키텍처를 효과적으로 표현  다양한 아키텍처 표준화 기법 ADL, UML, IEEE1471….

아키텍처 표준화 아키텍쳐 표현의 두 가지 방법  ADL 을 통하여  UML 을 이용하여 Requirements ADLsUML Code

아키텍처 표준화 ADL  고차원 시스템 구조 모델링 아키텍처 구조에 맞도록 표기법의 테일러링 가능 시스템 레벨의 성질들을 이해하기 쉬움 아키텍처 연구 그룹들부터의 다양한 경험 반영 다양한 도구 UML  객체지향 위주의 아키텍처 모델링  구현과 직접 연결  산업계 표준  상업적 도구 지원

아키텍처 표준화 ADL 의 필요성  프로그래밍 언어 사용 구현 수준의 표현 높은 수준의 추상화의 어려움 의사소통의 불확실성 제고, 이해성 제고 아키텍처 모델의 분석, 정제, 구현의 자동화를 통해 효율성 추구 ADL 현황  시스템 구조와 행위의 특정 측면을 표현하기 위한 수많은 언어들이 존재하지만 중요한 모든 측면들을 종합적으로 기술할 수 있는 ADL 은 존재하지 않음  ADL 로 기술된 아키텍처를 EJB 나 COM 아키텍처로 변환하는 것이 쉽지 않음  UML 프로파일 및 MDA 등장의 배경

아키텍처 표준화 ADL 의 예시  ACME Architecture Description Languages: An Overview, Tw Cook, MCC, 1999

아키텍처 표준화 IEEE 1471  IEEE 에서 2000 년 제정된 국제 표준  아키텍처가 표현해야 하는 내용 및 이들간의 관계를 제공  어떤 규모의 개발 프로젝트에서도 유용하게 활용될 수 있는 포괄 적인 내용을 다룸  아키텍처 명세가 반드시 포함해야 하는 내용들을 기술 이해관계자 (stakeholder), 관심사항 (concern), 뷰포인트 (viewpoint), 뷰 (view), 모델 (model) 등 Architecture Description Languages: An Overview, Tw Cook, MCC, 1999

Where are we now? 몇 몇 도메인에서는 J2EE 나.NET, Symbian/Series 60 과 같이 미리 조리된 (Precooked) 아키텍처가 플랫폼의 형태 로 제공됨  XML 이나 SOAP 와 같은 Application layer interchange 표준들은 이 러한 아키텍처에 중요한 영항을 미침 Python 이나 Perl 과 같은 스크립트 언어는 우리가 시스템 을 구성하는 방법을 변화시킴 프로젝트 시작의 변화  플랫폼의 능력에 관한 이해력을 바탕으로 시스템을 설계  오픈소스 소프트웨어와 같은 요소가 영향을 미침

The articles in this issue The Golden Age of Software Architecture  Mary Shaw and Paul Clements  Software Architecture 분야의 성숙에 관한 내용

The articles in this issue In Practices: UML Software Architecture and Design Description  Christian Lange, Michel Chaudron Muskens  UML 의 사용과 이의 효용성 및 문제에 관한 넓은 범위의 조사 자 료를 제공

The articles in this issue In Practices: UML Software Architecture and Design Description  UML 의 개선점 모델링에서의 좀 더 높은 표준성 특정 도메인이나 프로젝트를 위한 아키텍처 및 패턴 제공 Implementation 을 위한 UML 모델과 시스템 요구사항간의 높 은 일관성 품질 목표를 정의하기 위한 UML 모델

The articles in this issue Software Architecture-Centric Methods and Agile Development  Robert L. Nord, James E. Tomayko  Architecture-centric 방법론과 애자일 개발 방법론에 관한 컨셉

The articles in this issue Software Architecture-Centric Methods and Agile Development  XP(Extreme Programming)- 정규화된 프로세스 대신 기본 철학을 정의 수동적인 프로세스보다 능동적인 의지로 개발에 참여 의사소통  원활한 의사소통을 통해 왜곡된 결과를 미연에 방지  Pair Programming, 고객 상주 및 단위 테스트와 같은 방법 제시 단순성  당장 필요한 기능만 최대한 잘 만드는 것을 의미  의사소통과 맞물려서 간결한 디자인과 프로그램에 대한 불필요 한 의사소통을 최소화해서 전체적인 효율성을 높임 피드백  개발대상 시스템이며 즉각적인 피드백을 확인하기 위해서 항상 시 스템을 구성하는 프로그램이 실행 가능한 상태를 유지 용기  의사소통, 단순성, 피드백 등을 통해 다른 사람이 작업한 내용을 수 정할 때 개발자들이 부정적이거나 소극적인 모습을 보이지 않도 록 유도

The articles in this issue Using Architectural Patterns and Blueprints for Service- Oriented Architecture  Michael Stal  기존의 패턴들을 사용해 SOA 를 기반으로 하는 시스템의 기본적 인 구조를 설명  시스템 아키텍처적으로 미리 구성된 패턴을 사용함으로써 시스 템의 목적을 손쉽게 달성 서비스 클라이언트와 서비스 제공을 분리하기 위한 느슨한 결합 설계 구조 다양한 커뮤니케이션 스타일을 지원하기 위한 메시지 교환 패턴 서비스 검색 및 등록에 관한 패턴

The articles in this issue Using Architecture Models for Runtime Adaptability  Jacqueline Floch, Svein Hall steinsen, Erlend Stav, Frank Eliassen, Ketil Lund, Eli Gjorven  런타임 분석을 위한 아키텍처 리저닝의 필요성을 확장

Future 향후 10 년동안의 예상 이슈 (From 2006)  UML 을 기반으로 하는 Model-driven architecture  특정 도메인 아키텍처의 디자인, 표현, 분석, 실행 등과 같은 작업 들을 지원하는 툴  Agile Software development 의 기본 원칙을 지원하는 Software Architecture 주요 아키텍처 이슈  클라우드 시스템 아키텍처  Model Driven Development  모바일 애플리케이션 아키텍처  분산처리 애플리케이션  웹 애플리케이션 아키텍처  웹서비스 아키텍처

32

아키텍처 표준화 ADL 의 특성  합성 및 구현 부분적 기술들을 합성하여 전체 시스템의 구성 이질적 아키텍처의 합성 상위 수준의 제약성을 가진 도메인 아키텍처의 표현  추상화 서브 시스템의 캡슐화 사용자 정의  재사용 디자인 솔루션 ( 아키텍처 ) 의 재사용  분석 일관성, 완전성 등 시스템 수준의 특성을 아키텍처 모델에서 확인하고 검증할 수 있어야 함

ADL 과 UML ADL 의 예시  Semantic Application Design Language (SADL) Semantic Application Design Language (SADL),

Ten years of software architecture