Alpha Company
로그인
Alpha Company
로그인
소프트웨어 공학 CH. 6 디자인과 구현
Alpha, Orderly
·
2023년 5월 17일
팔로우
0
소프트웨어 공학
0
소프트웨어 공학
목록 보기
7/9
Design and Implementation
소프트웨어 설계 및 구현 활동은 항상 상호 연관되어 있습니다.
시스템을 구매해서 요구사항에 맞게 맞출수도 있습니다.
Object-oriented design using the UML
객체지향 설계기법을 사용 가능
예시
Define the context and modes of use of the system
우리의 시스템이 할 것과 하지 않을 것에 대한 경계를 정의함.
Design the system architecture
우리가 해야 할 것과 다른 것들의 상호작용을 시스템레벨에서 정의함
Identify the principal system objects
시스템의 내부에 구성요소를 정의함
아래 두 과정에서 내부, 외부에서의 상호작용을 정의함
Develop design models
Specify object interfaces
System context and Interaction
시스템의 경게를 정의하고, System context 즉 시스템의 상호작용을 구조화한다.
Interaction model
상호작용을 그림으로 표현 Ex. 유즈케이스
Approaches to identification
scenario-based analysis
누가 누구에게 어떤 행동을 하는지가 들어난다. 시퀀스 차트를 만들어 보면 시스템의 행동과 관계 같은 것들을 구현해 낼 수 있다.
예시
센서들을 추출해서 각각에 상응하는 객체를 만들 수 있다.
weather station -> 외부와의 상호작용을 담당
weather data -> 센서에서 받은 데이터를 저장
Sequence model – 동적인 행동을 표현
State machine model – 바뀌는 상태를 표현
Subsystem model
coherent : 응집도 / 일관성
coupling : 의존도
coherent 는 높이고, coupling 은 줄이는것이 중요하다.
Interface specification
Java interface 설계와 유사하다.
객체가 어떤 메소드를 사용할지에 대한 인터페이스를 제공받는것
Design pattern
특정 문제와 답에 대한 추상적 지식을 재사용하는것
다른 현장에서도 사용 가능하게 추상화가 잘 되어 있다.
Observer pattern
객체의 상태와 출력을 분리하는것
객체의 상태가 바뀌었을때 이를 출력에 제때 알리는것이 중요하다.
단점
보편화해서 만들어졌기 때문에 특정적인 것은 개발자의 별도의 개발이 필요하다.
위 경우는 객체가 observer를 가지고 있다.
Implementation issues
Reuse - 재사용
백지상태에서 시작x, 기존에 있는 것을 변경, 변화시키는 방향으로 진행함
초기에는 대부분의 소프트웨어를 새로 짰지만 현재는 누적된 데이터들과 통신이 가능해지면서 이전에 만들어졌던 것들을 공유하여 활용함.
종류
abstraction level – 디자인에 대한 재사용
직접적인 재사용이 아닌 지식이나 추상화 단계를 사용
object level – 객체를 재사용
직접적으로 라이브러리에서 재사용한다,
component level – 컴포넌트 재사용
system level – 시스템을 통째로 재사용
비용
큰 시스템의 경우 이것이 내 의도와 일치하는지 확인하는 비용이 든다.
새로 짜는것보다 이게 비쌀수도 있다.
Configuration management
버전관리
소프트웨어 컴포넌트의 버전을 트래킹하는것입니다.
시스템 통합
개발자가 구성 요소 버전을 정의하고, 필요한 구성 요소를 컴파일하고 연결하여 시스템을 자동으로 컴파일및 연결하여 시스템을 자동으로 구축하는 데 사용됩니다.
Problem tracking
모든 유저들에게 버그를 알리고 언제 누가 고칠지 알수있게 모두에게 알린다.
Host-target development
하나의 호스트에서 여러 타겟을 위한 프로그램을 개발한다.
컴포넌트가 특정 하드웨어에서만 동작 가능할시, 거기에만 배포가 가능하다.
고가용성 시스템의 경우 하나 이상의 플랫폼에 배포될수 있는것을 의미한다.
컴포넌트간 트래픽이 많을경우 같은 플랫폼에 배포하는것이 일반적이다.
GPL
오픈소스
LGPL
소스코드 배포 미필요
BSD
그냥 사용가능
Alpha, Orderly
만능 컴덕후 겸 번지 팬
팔로우
이전 포스트
소프트웨어 공학 CH. 6 아키텍쳐 디자인
다음 포스트
소프트웨어 공학 CH8. Testing
0개의 댓글
댓글 작성