프로그래밍

소프트웨어 설계 실무 교육

문달78 2012. 4. 6. 14:33

오늘부터 선태에게 SW 개발과 관련된 실무 교육을 실시하기로 하였다. 다음에 오는 후배들을 위해 그 내용을 정리한다.


120406 금


1. 교육 방법

가. 숲에서 가지로. Overview에서 detail로 진행된다.


나. 듣는 이는 교육의 단계를 항상 파악하고 질문하고 또는 질문에 답하는 노력을 한다. 내가 어느 깊이에서 얘기하고 있는지를 파악하고 그 깊이에 맞는 질문을 한다. 질문의 의도는 질문이 구체적일 때 파악될 수도 있지만 듣는 사람을 생각하게 한다는 것은 결국 듣는 이에게 context를 머리속으로 항상 파악하게 하고 질문은 두리뭉실 한다. 결국 이러한 방법은 듣는 이가 항상 생각하도록 하는 좋은 방법이 되는 것이다. 교육생을 생각하게 할 수 없는 교육은 의미가 없다!!


다. 피 교육자는 잘 몰라도 항상 기록하도록 노력하며 한 세션이 마무리되면 기록에 따라 복습하고 잘 이해되지 않는 부분은 질문할 수 있도록 한다. 


라. 교육수강 인원이 적을 경우에 질문과 대답은 되도록 즉시에 이루어질 수 있도록 한다.


2. 프로그램이란?

 프로그램은 하나의 시스템과 동일하게 볼 수 있으며 입력에 따라 출력이 결정되는 구조이다. 닫힌 시스템과 열린 시스템을 생각하고 프로그램과의 관계를 생각해보라.


3. SW 개발 절차

 SW 개발은 아래와 같은 절차를 따르며 그 개발 과정은 개선을 위해 반복 수행되기도 한다. 과정의 마지막에서 발견된 문제가 절차의 초기단계 수정을 요할수록 그 비용은 아주 크므로 설계하는 SW의 복잡도(LOC)에 따라 많은 고민이 필요하다.


가. 요구사항 분석

나. 설계 : agile 방법론, 모듈, 레이어, architecture

다. 구현

라. 테스트

마. 유지보수


4. 설계의 시작

 분석된 요구 사항 또는 기능을 구분하여 모듈로 구성하는 것이 가장 처음에 할 일이라면 그 다음으로는 프로그램의 background process와 foreground process를 분류하는 것이 이어져야 할 것이다. 


가. background process

 어떤 프로그램이 주기적으로 항상 수행하고 있는 작업으로 C 언어를 구현할 때 main 함수에서 루프로 처리되는 부분이 대응된다. 인체에서 나도 모르게(뇌에서 알아서 하는) 일어나는 생체활동들이 그러할 것이다.


나. foreground process

 주로 어떤 이벤트에 의해 처리되는 작업으로 주기적으로 일어나지는 않는다. SW에서는 user interaction이 관련되어 있으며 스위치 입력 처리가 그 대표적인 예가 될 것이다. Non-OS 프로그램에서 ISR(Interrupt Service Routine)이 이에 해당할 것이다.


 background function 또는 foreground function이 아닌 process라고 부른 것은 프로세스는 상위레벨의 서비스 작업을 의미하기 때문이다. background process는 foreground process가 될 수 있으며 그 반대도 가능하다.


다. 프로세스별 테이블 작성하기

 이제 프로세스별로 테이블을 작성해보자. Background process의 경우 가장 중요한 속성인 프로세스의 처리 주기, foreground process의 경우 프로세스를 실행하기 위한 이벤트조건을 항목으로 하여 테이블을 작성한다. 객체지향(object oriented) 프로그래밍에서 객체를 속성(attribute)와 메쏘드(method)로 구분하여 모델링하는 이유는 어떤 대상(또는 객체)은 이를 표현하기 위한 속성과 속성을 변경하는 등의 처리를 하는 메쏘드로 정의되면 명학해지기 때문이 아닐까 싶다.  프로세스도 마찬가지로 프로세스의 속성과 프로세스의 속성(또는 상태)가 변화되는 것으로 나타낼 수 있다. 신호처리 분야의 용어로 얘기하면 state-space 모델이 이와 유사한 개념일 수 있다.






'프로그래밍' 카테고리의 다른 글

MMU 이해하기  (0) 2012.04.16
소프트웨어 품질 평가 방법  (0) 2012.04.06
callback 함수의 쓰임새  (0) 2012.04.06
스마트폰과 보안  (0) 2012.04.04
ARM 부트로더 이해하기  (0) 2012.04.03