Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- useEffect
- log4j2
- mybatis
- react
- Spring
- IntelliJ
- VSCode
- springboot
- Windows
- JPA
- gson
- BPMN
- Git
- Kubernetes
- MySQL
- nginx
- wildfly
- jetbrains
- Java
- docker
- nodejs
- gradle
- tibero
- database
- intellijIDEA
- JavaScript
- NCP
- kubectl
- dbeaver
- LOG4J
Archives
- Today
- Total
두 손끝의 창조자
SW 개발론 : 큰 단위의 소프트웨어를 어떻게 개발할 것인가? 본문
단계
1. 사용자 요구 분석
- 사용자가 개발자에게 줘야 할 정보 = what(specification language(명세언어:어떤것을 정의할 때 쓰는 언어, 종류:petrinet, finite state mechine, logic),)
- 개발자가 사용자에게 줘야 할 정보 = how(c, java)
2. 설계
- 모듈(또는 객체)로 분할하여 공략
3. 구현
- 모듈의 인터페이스를 실제 구현
4. 테스팅
today's topic : specification
ex1) tree를 일반인에게 설명 -> 아주 쉽지도 어렵지도 않다.
ex2) Given two list L1 and L2, define L1 = L2
두 개의 리스트 L1, L2가 있을때 L1, L2가 같다는 개념을 정의하고 싶다. 두 개의 리스트가 언제 같은가?
3,5,7,9 = 3,5,7,7 두개가 같다고 볼 수 있나? 없다. 다르다.
3,5,7,9 ≠ 3,5,7,7
대응하는 두개의 원소가 서로 같을때 같다고 정의 할 수 있다.
answer : L1 = L2 if each corresponding members of the two lists are identical.
ex3) Given two numbers, define N1 = N2 where
0 = +(-(0)) = +(+(-(-(0)))) = ......
우리가 어떤것을 정의할 때 어떤 테크닉이 필요한데
key ideas : constructive definition vs nonconstructive definition
구성원리가 있으면 constructive
없으면 nonconstructive
"answer : L1 = L2 if each corresponding members of the two lists are identical."은
nonconstructive definition.
"Given two numbers, define N1 = N2 where 0 = +(-(0)) = +(+(-(-(0)))) = ...... "은
constructive definition.
"answer : L1 = L2 if each corresponding members of the two lists are identical."을
constructive definition으로 바꾸면
rule1. nil = nil
rule2. if L1 = L2, then a, L1 = a, L2.
L1과 L2가 같으면 a를 추가 하여도 같다.
다시 tree를 정의 해 보자.
constructive definition :
rule1 : a node is a tree.
ruel2 : Let T1, T2, ..., Tn be trees and w be a node.
Constructive definition = recursive definition
ex5) 4호관 coffee vending machine을 제조업자에게 설명.
(제조업자가 자판기를 모른다고 가정하고)
가정 : milk coffee(100원)는 커피1그램, 물1그램, 프림 1그램 사용
black coffee(100원)는 커피1그램, 물1그램 사용.
(제한사항)
종이컵 제공안함, 초기 커피 50, 물 50, 프림 50 그램
100원, 500원 동전 사용가능.
=====================================================================
규칙1 : 투입한 동전이 100원 이상이면 상품 버튼 활성화
규칙2 : 반환 버튼을 누르면 환불
규칙3 : 블랙 또는 밀크 커피 버튼을 누르면 물1, 커피1 제공, 잔액 -100원
규칙4 : 밀크일 경우 프림1제공
규칙5 : 투입된 잔액에 100원 미만이면 거스름돈 제공, 버튼 비활성화
규칙6 : 잔액이 100원 이상이면 규칙1
자동판매기는 상품을 판매한다.
상품은 일정한 돈과 교환한다
상품에는 커피가 있다.
커피는 커피 1그램 물 1그램을 사용한다
블랙커피는 커피이다.
밀크커피는 커피와 프림1그램을 합친것이다.
=====================================================================
initial resource : <50,50,50,0,0>
상태 : <C, W, P, Ch, E>
rule 1. <C, W, P, Ch, E> -> (insert \100) <C,W,P,Ch+100, E>
rule 2. <C, W, P, Ch, E> -> (milkcoffee button) <C-1, W-1, P-1, Ch-100, E>, if Ch > 100
rule 3. <C, W, P, Ch, E> -> (blackcoffee button) <C-1, W-1, P, Ch-100, E>, if Ch > 100
rule 4. <C, W, P, Ch, E> -> (coin return button) <C,W,P,0, E>
rule 5. <C, W, P, Ch, E> -> (insert \500) <C,W,P, Ch+500, E>
ex2) Given two list L1 and L2, define L1 = L2
두 개의 리스트 L1, L2가 있을때 L1, L2가 같다는 개념을 정의하고 싶다. 두 개의 리스트가 언제 같은가?
3,5,7,9 = 3,5,7,7 두개가 같다고 볼 수 있나? 없다. 다르다.
3,5,7,9 ≠ 3,5,7,7
대응하는 두개의 원소가 서로 같을때 같다고 정의 할 수 있다.
answer : L1 = L2 if each corresponding members of the two lists are identical.
ex3) Given two numbers, define N1 = N2 where
0 = +(-(0)) = +(+(-(-(0)))) = ......
우리가 어떤것을 정의할 때 어떤 테크닉이 필요한데
key ideas : constructive definition vs nonconstructive definition
구성원리가 있으면 constructive
없으면 nonconstructive
"answer : L1 = L2 if each corresponding members of the two lists are identical."은
nonconstructive definition.
"Given two numbers, define N1 = N2 where 0 = +(-(0)) = +(+(-(-(0)))) = ...... "은
constructive definition.
"answer : L1 = L2 if each corresponding members of the two lists are identical."을
constructive definition으로 바꾸면
rule1. nil = nil
rule2. if L1 = L2, then a, L1 = a, L2.
L1과 L2가 같으면 a를 추가 하여도 같다.
다시 tree를 정의 해 보자.
constructive definition :
rule1 : a node is a tree.
ruel2 : Let T1, T2, ..., Tn be trees and w be a node.
Constructive definition = recursive definition
ex5) 4호관 coffee vending machine을 제조업자에게 설명.
(제조업자가 자판기를 모른다고 가정하고)
가정 : milk coffee(100원)는 커피1그램, 물1그램, 프림 1그램 사용
black coffee(100원)는 커피1그램, 물1그램 사용.
(제한사항)
종이컵 제공안함, 초기 커피 50, 물 50, 프림 50 그램
100원, 500원 동전 사용가능.
=====================================================================
규칙1 : 투입한 동전이 100원 이상이면 상품 버튼 활성화
규칙2 : 반환 버튼을 누르면 환불
규칙3 : 블랙 또는 밀크 커피 버튼을 누르면 물1, 커피1 제공, 잔액 -100원
규칙4 : 밀크일 경우 프림1제공
규칙5 : 투입된 잔액에 100원 미만이면 거스름돈 제공, 버튼 비활성화
규칙6 : 잔액이 100원 이상이면 규칙1
자동판매기는 상품을 판매한다.
상품은 일정한 돈과 교환한다
상품에는 커피가 있다.
커피는 커피 1그램 물 1그램을 사용한다
블랙커피는 커피이다.
밀크커피는 커피와 프림1그램을 합친것이다.
=====================================================================
initial resource : <50,50,50,0,0>
상태 : <C, W, P, Ch, E>
rule 1. <C, W, P, Ch, E> -> (insert \100) <C,W,P,Ch+100, E>
rule 2. <C, W, P, Ch, E> -> (milkcoffee button) <C-1, W-1, P-1, Ch-100, E>, if Ch > 100
rule 3. <C, W, P, Ch, E> -> (blackcoffee button) <C-1, W-1, P, Ch-100, E>, if Ch > 100
rule 4. <C, W, P, Ch, E> -> (coin return button) <C,W,P,0, E>
rule 5. <C, W, P, Ch, E> -> (insert \500) <C,W,P, Ch+500, E>
반응형
Comments