슬라이드 제목 없음

Download Report

Transcript 슬라이드 제목 없음

컴퓨터 공학 및 응용실습
5월 29일 9:30 공대강당
최병주
Software Architecture : Fundamentals
May, 2002
박수용
서강 대학교 컴퓨터학과
[email protected]
목차





서론
Architecture 란 무엇인가?
Architecture view
Architecture 의 중요성
결론
Software System Engineering Lab
서론
Building a dog house
Software System Engineering Lab
Building a house
Software System Engineering Lab
Building a High Rise
Software System Engineering Lab
Dimensions of Complexity
Higher technical complexity
- Embedded, real-time, distributed, fault-tolerant
- Custom, unprecedented, architecture reengineering
An average software project: - High performance
- 5-10 people
Defense
- 10-15 month duration
Telecom
Weapon System
- 3-5 external interfaces
Switch
National Air Traffic
- Some unknowns & risks
Commercial
Control System
Embedded Compiler
Automotive
Large-Scale
Software
CASE Tool
Organization/Entity
Simulation
Lower
management
complexity
- Small scale
- Informal
- Single stakeholder
- “Products”
Higher
management
complexity
Small Scientific
Simulation
IS Application
Distributed Objects
(Order Entry)
Enterprise IS
(Family of IS
Applications)
IS Application
GUI/RDB
(Order Entry)
Business
Spreadsheet
Lower technical complexity
- Mostly 4GL, or component-based
- Application reengineering
- Interactive performance
Software System Engineering Lab
Defense
MIS System
- Large scale
- Contractual
- Many stake holders
- “Projects”
Problems





Increasing uncertainties in requirements
Rapidly evolving technology
Structural change in the industry and
government
Needs to interoperability with other systems
Productivity and quality improvement
We need a description of a target system that
Provides a answer for above problems
Software System Engineering Lab
Architecture 란
무엇인가?
정의


표준이나 보편화된 정의가 없다.
몇몇 일반적인 정의
– Software 구성 요소들, 관계, 공정, 제약조건,
기능으로 표현된 기본적이고 통합적인 체계구
조. [Rechtin 1991]
– Software 구성 요소들의 구조, 그들 간의 관계,
시스템 설계와 개발 시 적용되는 원칙과 지침
[Garlan 1995]
Software System Engineering Lab
정의
• 소프트웨어 구성 요소들, 관계, 제약조건 등의
모임
• 소프트웨어 개발 참가자들의 요구 사항들의 모
임
• 구성 요소들간의 연결, 소프트웨어 개발 참가자
들의 요구 사항들을 만족시키는데 필요한 제약
조건들을 증명해 보일 수 있는 근거[Boehm
1995]
Software System Engineering Lab
정의
공통
– 구성 요소들, 관계, 기능, 제약들
 추가
– 공정, 원칙과 지침, 요구 사항들

Software System Engineering Lab
목적



이해도 향상 : 복잡한 소프트웨어를 시각화 및 단순화
(추상화에의한) 시킴으로 개발자와 요구자간의 이해도
향상
– 시스템 경계(boundary), 주요 구성 요소, 기능, 제
약조건, 관계
대안의 선택 : 개발 시 예상되는 변화에 대한 대안들의
고려
분석 : 전체적인 요구사항의 일관성 (consistency), 품
질 요소 (performance, reliability), 등의 검증
Software System Engineering Lab
목적
관리 : 소프트웨어 개발시 상대적 가격 및 일
정 예측의 근거 자료, 위험요소(Risk) 예측
및 관리 방안 계획
 재사용 : 향후 유사 소프트웨어 개발시 재사
용의 근거 재시로 인한 막대한 비용 절감

Software System Engineering Lab
개발 방안

실제로 성공적인 종합체계구조 개발을 위하
여 경험적이고 절차적인 방법과 일반적인
지식 및 실제상황에서 발생된 합의 및 규칙
등을 적절하게 혼합하여 적용 하여야 한다
Software System Engineering Lab
개발 공정
영역화
 집단화, 분할화
 검증

영역화
목표의 축소/팽창
거시적인 면에서의 대안 고려
구매자의 만족-개발자의 성공 가능성 조사
집단화
분할화
기능적 집단화 (추상적)
구성요소의 서브시스템화
인터페이스 정의 및 분석
시간적 흐름/기능에의한 집단화
동작-기능적 분할
성능 모델의 구축
인터페이스 정의 및 분석
검증
기능에 의한 검증
검사 및 평가
확인
실패에 대한 평가
Software System Engineering Lab
A Good architecture






Resilient
Simple
Approachable
Clear separation of concerns
Balanced distribution of responsibilities
Balances economic and technology
constraints
Software System Engineering Lab
Architecture View
소프트에어 구조의 모델

다양한 관점
자료
목적/목표
동작
시스템
관리
성능
%
형태
Software System Engineering Lab
Architectural view

An architectural view is a simplified
description (an abstraction) of a system
from a particular perspective or vantage
point, covering particular concerns, and
omitting entities that are not relevant to this
perspective
Software System Engineering Lab
Representing Software architecture (4+1 model)
Logical View
End-user
Functionality
Implementation View
Programmers
Software management
Scenarios
Process View
System integrators
Performance
Scalability Conceptual
Throughput
Software System Engineering Lab
Deployment View
Physical
System engineering
System topology
Delivery, installation
Communication
Architecture 의 중요성
As software begins larger
Overall Software structure
Organization of a software
Global control structure
Protocols for communication
Software System Engineering Lab
Algorithms and
Data structures
개발의 기반으로서

미래의 소프트웨어는...
–
–
–
–
–
–

컴포넌트 기반의 시스템이 지배할 것이다.
더 많은 비프로그래머가 프로그래밍을 하게 될 것이다.
지속적으로 발전하는 시스템이 비즈니스의 일반적인 형태
가 될 것이다.
시스템은 더욱 분산되고 병렬화될 것이다.
기술의 범람(Technology Churn)은 계속될 것이다.
모델링, 아키텍쳐, 프로세스에 대한 소프트적인 경험들이
더욱 많이 채택될 것이다.
결국, 점점 복잡해지는 소프트웨어와 컴포넌트의 조립을 통제하
기 위해서는 밑그림이 되는 아키텍쳐가 매우 중요하다.
Software System Engineering Lab
개발의 기반으로서
The architecture is the
foundation of everything.
Software System Engineering Lab
Architecture 의 중요성 - 요약
소프트웨어에 대한 이해
 개발의 조직화
 재사용의 촉진
 소프트웨어의 진화

Software System Engineering Lab
결론
Architecture의 현재(1/2)


Good Architectural Design has Always been a Major
Factor in Determining the Success of a System.
However, while there are Many Useful Architectural
Paradigms
– Pipelines, Layered Systems, Client-Server, etc.


선택의 문제는? ------------> 직관
그러나…
Software System Engineering Lab
Architecture의 현재(2/2)

그러나 바뀌고 있다. How?
– Architectural Description Language
• UML & OCL, ADL, Model Driven Architecture
– Codification of Architectural Expertise
• Pattern Oriented Software Architecture
• Architecting Processes
– Frameworks of Specific Domains
• Facilities in the OMG, Domain Specific Architecture
– Formal Underpinnings for Architecture
• Z-Notations, UML OCL, ADL
Software System Engineering Lab
Architecture가 추구하는 것은?

Sound Basis for Architecture Promises
Benefits for Both Development and
Maintenance
– Recognize Common Paradigms
– Getting the Right Architecture
– Analysis & Description of High-Level
Properties of a Complex System
– User of Notations for Describing
Architectural Paradigms
Software System Engineering Lab
성공적 architecture 개발의 증거





요구사항에 대한 사용자와 개발자간의 공통된
이해
향후 변경에 대한 대안책 마련
다양한 설계 방안에 대한 체계적 분석을 통한
선택 및 장단점 파악
재사용의 기반 마련
상호 운용성에 대한 고려 및 보장
Software System Engineering Lab
Q&A
Software System Engineering Lab