두 손끝의 창조자

SW 개발론 : 큰 단위의 소프트웨어를 어떻게 개발할 것인가? 본문

프로그래밍언어

SW 개발론 : 큰 단위의 소프트웨어를 어떻게 개발할 것인가?

codinglog 2008. 10. 15. 17:13
단계
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>



반응형
Comments