(1) 입출력 간 연관성은 없으나, 순서에 따라 수행할 필요가 있다.
(2) 동일한 입출력을 사용한다.
(3) 하나의 기능에 모두 기여하고 밀접하게 관련되어 있다.
[보기] 기능적(functional), 시간적(temporal), 교환적(communication), 절차적(procedural), 순차적(sequential), 우연적(coincidental), 논리적(logical)
(1) 절차적 응집도(Procedural Cohesion)
(2) 교환적 응집도(Communication Cohesion)
(3) 기능적 응집도(Functional Cohesion)
Cohension
우연적 응집도 < 논리적 응집도 < 시간적 응집도 < 절차적 응집도 < 교환적 응집도 < 순차적 응집도 < 기능적 응집도
=> 우논 시절 교순도 == 우는 시절 교수도
응집도 오름차순
(1) 목적지 호스트와 미리 연결한 후, 통신하는 연결형 교환 방식
(2) 헤더에 붙어서 개별적으로 전달하는 비연결형 교환 방식
(1) 가상 회선 방식
(2) 데이터그램 방식
패킷 교환 방식
패킷 교환은 송신 측에서 모든 메시지를 일정한 크기의 패킷으로 분해해서 전송하고, 수신 측에서 이를 원래의 메시지로 조립하는 것이다.
목적지 호스트와 미리 연결한 후, 통신하는 연결형 교환 방식
= 가상 회선 방식
해더에 붙어서 개별적으로 전달하는 비연결형 교환 방식
= 데이터그램 방식
디자인 패턴 중 ( ) 패턴은 반복적으로 사용되는 객체들의 상호작용을 패턴화한 것으로
클래스나 객체들이 상호작용하는 방법이다. 알고리즘 등과 관련된 패턴으로
그 예는 Interpreter, Observer, Command 가 있다.
설명에서 말하는 디자인 패턴은 Gof 패턴이다.
Gof(Gang of Four Design Pattern) 디자인 패턴
객체 지향 프로그래밍 설계를 할 때 자주 발생하는 문제들을 피하기 위해 사용되는 패턴
Gof 패턴의 상위 패턴은 아래와 같이 있다.
데이터베이스 병행제어
트랜잭션 병행제어(Transaction Concurrency Control)
여러 트랜잭션들이 동시에 실행되면서도 데이터베이스의 일관성을 유지할 수 있게 하는 기법
DB 일관성 유지 하면서
- 데이터베이스 공유 최대화
- 시스템의 활용도 최대화
- 사용자 응답시간 최소화
병행제어 기법
(1) 입력값이 출력값일 때 - 예) 자료 흐름도(DFD)
(2) 시간에 따라 변하는 것 - 예) 상태 변화도(DFD)
(3) 구조 - 예) ER다이어그램(ERD)
[보기] Operation, Sequence, Information, Transaction,
Function, I/O, Dynamic, Architecture, Cause-Effect,
Constraint, Rebuilding, Durat
(1) Function Modeling
(2) Dynamic Modeling
(3) Object Modeling
럼바우 분석기법
Rumbaugh's Object Modeling Technique
소프트웨어 구성 요소를 그래픽 표기법을 이용하여 모델링하는 객체지향 분석 기법
순서는 객체 모델링, 동적 모델링, 기능 모델링 순으로 이루어짐
객체 모델링(Object Modeling, Information Modeling)
동적 모델링(Dynamic Modeling)
기능 모델링(Functional Modeling)
int mp(int base, int exp);
int main(){
int res;
res = mp(2,10);
printf("%d",res);
return 0;
}
int mp(int base, int exp) {
int res = 1;
for(int i=0; i < exp; i++){
res = res * base;
}
return res;
}
1024
위 코드는 반복문 10번 반복됨으로써 2의 10승을 구하는 식입니다.
public class Test {
public static void main(String[] args){
system.out.print(test.check(1));
}
( 괄호 ) String check (int num) {
return (num >= 0) ? "positive" : "negative";
}
}
[출력결과]
positive
static
소스에서 Test 클래스의 객체 생성없이 check 메서드를 접근 했음으로 이는 static으로 선언한 정적 메소드이어야합니다.
int main() {
int ary[3];
int s = 0;
*(ary + 0) = 1;
ary[1] = *(ary + 0) + 2;
ary[2] = *ary + 3;
for(int i = 0; i < 3; i++) {
s = s + ary[i];
}
printf("%d", s);
}
8
(ary + 0) = 1;
arr의 0 인덱스는 1
ary[1] = (ary + 0) + 2;
arr의 1 인덱스는 1 + 2
ary[2] = *ary + 3;
arr의 2 인덱스는 1 + 3
이들을 총합 한 것을 출력함으로 8
public class over {
public static void main(String[] args){
ovr a1 = new ovr1();
ovr a2 = new ovr2();
System.out.println(a1.sun(3,2) + a2.sun(3,2));
}
int sun(int x, int y){
return x + y;
}
}
class ovr2 extends ovr1 {
int sun(int x, int y){
return x - y + super.sun(x,y);
}
}
11
애초에 문제에서 클래스명과 함수명이 오타가 있지만 이를 무시하고 푼다는 가정하에
a1.sun(3,2) = 5
a2.sun(3,2) = 6
왜냐하면 a2에서는 3-2 + super.sun(x,y) = 1 + 5 이기 때문
테스트 하네스의 도구 구성 요소 중, 상향식 테스트시,
상위 모듈 역할을 대신하는 테스트 드라이버와 하향식 테스트 시,
하위 모듈 역할을 대신하는 테스트 ( ) 이 있다.
스텁
소프트웨어 개발 생명 주기(SDLC, Systems development life cycle)
단통시인설
단위 테스트(Unit Test)
통합 테스트(Integration Test)
상향식 통합 : Bottom-Up
하위 모듈부터 개발한 경우
상위 모듈이 없으므로, 상위 모듈 역할을 하는 테스트 드라이버(Driver)를 이용
테스트 드라이버를 테스트 하네스(Harness)라고도 함
상향식 통합 : Top down
상위 모듈부터 개발한 경우
하위 모듈이 없으므로, 하위 모듈들 역할을 하는 스텁(Stub)을 이용
시스템테스트(System Test)
인수 테스트(Acceptance Test)
설치 테스트(Install Test)