통합검색
· 마을서비스란?  · 포럼마을  · 일반마을  · 테마마을  · 마을랭킹  · 활동왕
· 덱스퍼트란?  · TECBOX   · PRSBOX   · 이용안내  
· DEXT제품군  · 솔루션베이  · S/W & ESD 컴포넌트
· 프로그램베이
· LiveSeminar  · LiveConference
데브피아 사이트 운영자, 비사모 마을 입니다.
개발이 아니더라도 다양한 분야에 많은 얘기를 나누는 공간입니다.
  마을등급 비사모 마을   이 마을은 테마마을 입니다이 마을은 자유가입제 마을 입니다 마을소개 페이지로 이동 전입신청
마을촌장촌장 비사모 방문자 95886 since 2006-12-31
데브피아 공지사항
자유게시판
앨범
개인게시판
[마을 게시판]
데브피아 운영 소식
교육 & 세미나 홍보
[개발자 공감]
개발자 공감글
개발자 공감만화
랑데브 게시판
칼럼 게시판
개발자 고충상담
Dev Talk
자유토론방
벼룩시장
재나미 우스개
구인/프로젝트 정보
사람인 채용 게시판
  고객지원 게시판
마이 데브피아
 나의 e-Money 내역
 활동왕 My Page
 스크랩한 게시글보기
 쪽지관리
 주소록관리

 Dev Talk
 소프트웨어 개발이란... 2011-10-31 오후 1:00:09
ㅎㅎㅎㅎㅎ 번호: 3890  / 읽음:27,577

제목이 좀 거창하네요..  낙시질을 위해서..ㅡ.ㅡ..

 

우선 본인 소개를 간단히 하면

 

이제 겨우 10년 좀 넘게 개발을 하고 있는 (처음 5,6년 정도는 C++, 그 후엔 C#..)

 

문서작성을 극도로 싫어하는 그저 그런 개발자네요..

 

이 글을 쓰는 이유는 내가 생각하는 소프트웨어 개발에 대한 생각에 얼마나 많은 공감을 얻어낼수 있는지 알아보고 싶어서 입니다.

 

그리 길게 쓸 생각은 없지만 글 쓰기를 편하게 하기위해 말투가 좀 편해질테니.. 싫으신 분들은 벡스페이스..;

 

자..소프트웨어 개발이란 무었인가..??

 

많은 이들이 소프트웨어 개발을 소프트웨어 공학이라 말하며 툭하면 건축이나 제조업에 비교를 해대곤 한다.

 

소프트웨어 개발을 하드웨어 제작과 비교를 하는 글들을 보면.. 좀 어이가 없다.

 

근데 별다른 예가 없기에 나도 집짓기랑 소프트웨어 개발을 비교해가며 설명하고자 한다..ㅡ.ㅡ.;

 

보통 집을 짓는다 하면 아래와 같은 공정을 거칠것으로 예상된다..

 

사전 조사 -> 설계사에 의한 설계도 작성 -> 시공사에 의한 공사  -> 완공된 집에서 유저 해피해피..

 

그리고 소프트웨어 개발도 이것과 비슷하게..

 

사전 조사 -> 설계자에 의한 설계문서 작성 -> 개발자에 의한 제조(소스코딩) -> 완성된 실행파일로 유저 해피해피..

 

뭐.. 이런식으로 보는 사람이 많은듯 하다..

 

오늘은 이중에서 완성된 실행파일을 중심으로 설명을 진행 할까한다..

 

유저가 실제로 사용하는 소프트웨어라는게 진짜로 실행파일일까??

 

일반유저에게는 그럴수도 있겟지만 우리 개발자들에게는 아니다.

 

개발자의 관점에서 유저가 실제로 사용하는 소프트웨어란

 

실행파일이 운영체제에 의하여 메모리공간에 로드되어 처리되는 프로세스일 것이다.

 

그렇다. 집짓기의 최종 결과물이 완공된 집이듯 소프트웨어 개발의 최종 결과물은 프로세스이다.

 

그럼 이 프로세스를 작성하는것은 무엇인가?

 

위에서 이미 말했듯이 프로세스를 작성하는건 운영체제이다...

 

그럼 운영체제는 어떤 설계도?를 가지고 프로세스를 만드는 것일까?

 

ㅎㅎ 그렇다. 개발자가 만들어 논 실행파일이다.

 

결국 실행파일이란 소프트웨어 개발의 최종 결과물이 아닌 설계도라는게 나의 생각이다.

 

 

우리 개발자들은(단순 코더 조차도) 모두 소프트웨어의 설계를 담당하고 있고

 

우리가 만든 설계도대로 운영체제가 프로세스 제작을 담당하며

 

유저는 그 프로세서를 이용하는 것이다...

 

결국 내가 생각하는 소프트웨어 개발은

 

사전 조사 -> 개발자에 의한 설계도(실행파일) 작성 -> 운영체제에 의한 프로세스 제조 -> 실행된 프로세스로 유저 해피해피..

 

이렇게 되는 것이다..

 

이것은 동작하는 소프트웨어를 중요시하는 agilemanifesto (http://agilemanifesto.org/)와도 일맥상통 한다고 생각한다..

 

조금만 더 이야기를 진행해보면..

 

개발자가 소스코드를 작성하는 것이 소프트웨어의 설계이며

 

빌드과정은 개발자가 알아보는 설계도를 운영체제(런타임, VM, .Net 뭐든..)가 알아보게 변환하는 것이다.

 

그럼 소프트웨어 설계자에 의해 작성된 설계문서란 무엇인가?

 

소스코드를 작성하기위한 사전 조사의 결과물 일 뿐이다.

 

또는 복잡한 소스코드를 알기 쉽게 표현한 다이제스트판 일 뿐이다.

(소스코드 작성 전 또는 후에 만들어지는 간이판으로 그 이상의 의미는 가질 수 없는...)

 

자.. 이상으로 내가 생각하는 소프트웨어 개발에 대한 개요를 설명해봤다..

 

이제 결론을 이야기해보자.

 

소스코드란 소프트웨어 설계의 가장 구체적이고 명확한 표현법으로

 

다른 어떤 표기법(가령 UML등)으로도 대체할수 없슴을 강조하고 싶다.

(아직까진.. 나중에 소프트웨어 개발의 패러다임이 완전히 바뀌기 전까지는)

 

많은 사람들이 소프트웨어 개발을 위해서는 제대로 된 설계를 해야한다고 하며

 

설계없이 직접 코딩을 시작하면 막코딩이라 비난하거나 또는 스스로를 비하하는듯 하다.

 

하지만 오늘 나의 결론은 {소스코딩 = 설계} 이다.

 

개발언어의 공부라는건 결국 설계도의 표현법을 익히는것이고...

 

절대로 어려운 개발방법론이나 문서작성등으로 소프트웨어 설계라는 환상에 기죽지 말자.

 

소프트웨어 설계의 최종 결과물이 실행파일임을 다시한번 강조하며...

 

----------------------------------------------------------------------------------


마치며

 

1. 뭐.. 소프트웨어 개발이란게 어려운게 사실이고 정답도 없고 그렇다.
내가 위에 쓴 글이 정답이라고도 생각치 않는다.
처음에 밝혔듯이 나의 이런 생각에 공감하는 개발자가 있는지 보고 싶을뿐이다..

 

2.http://agilemanifesto.org/ 에 가보면 세계 여러나라 말로 번역이 되어 있다.
근데.. 한국말은..ㅡ.ㅡ... 누군가 영어가 되는 사람이 있다면 봉사활동 좀 부탁하고싶네요..

 

3.혹시 이 글에 공감하는 개발자가 어느정도 있다면
다음엔 보다 실제적인 개발 방법에 대해서 이야기 해보고 싶다..

 


 

 

[코멘트] 좋음
2011-10-31 13:10
 kingsky  kingsky님께 메시지 보내기kingsky님을 내 주소록에 추가합니다.kingsky님의 개인게시판 가기 
.....
저장 취소
[코멘트] 난감
2011-10-31 13:13
 diebuster  diebuster님께 메시지 보내기diebuster님을 내 주소록에 추가합니다.diebuster님의 개인게시판 가기 
....
저장 취소
[코멘트] 좋음
2011-10-31 13:13
 iduser  iduser님께 메시지 보내기iduser님을 내 주소록에 추가합니다.iduser님의 개인게시판 가기 
.....................
저장 취소
[코멘트] 난감
2011-10-31 13:21
 freerose  freerose님께 메시지 보내기freerose님을 내 주소록에 추가합니다.freerose님의 개인게시판 가기 
......................................
저장 취소
[코멘트] 좋음
2011-10-31 13:21
aizencom
... 어쩌라구...
저장 취소
[코멘트] 좋음
2011-10-31 13:24
 ongizangi  ongizangi님께 메시지 보내기ongizangi님을 내 주소록에 추가합니다.ongizangi님의 개인게시판 가기 
.....
저장 취소
[코멘트] 좋음
2011-10-31 13:31
어처구니
제 2 의 뿅뿅뿅.....
저장 취소
[코멘트] 좋음
2011-10-31 13:39
 kuseel  kuseel님께 메시지 보내기kuseel님을 내 주소록에 추가합니다.kuseel님의 개인게시판 가기 
....
저장 취소
[코멘트] 좋음
2011-10-31 13:44
데르피언
ㅅㄱㅇ
저장 취소
[코멘트] 좋음
2011-10-31 13:45
 TohnoKanna  TohnoKanna님께 메시지 보내기TohnoKanna님을 내 주소록에 추가합니다.TohnoKanna님의 개인게시판 가기 
ㅅㄱㄷ
저장 취소
[코멘트] 좋음
2011-10-31 14:10
 kangwoohyuk  kangwoohyuk님께 메시지 보내기kangwoohyuk님을 내 주소록에 추가합니다.kangwoohyuk님의 개인게시판 가기 
개발만 하세요..
저장 취소
[코멘트] 좋음
2011-10-31 14:32
 kingsky  kingsky님께 메시지 보내기kingsky님을 내 주소록에 추가합니다.kingsky님의 개인게시판 가기 
ㅎㅎㅎ
칼럼 게시판으로 ㄱㄱ
저장 취소
[코멘트] 좋음
2011-10-31 14:48
 eleccom  eleccom님께 메시지 보내기eleccom님을 내 주소록에 추가합니다.eleccom님의 개인게시판 가기 
.......
저장 취소
[코멘트] 침묵
2011-10-31 15:19
ㅎㅎㅎㅎㅎ
공감율 0 군요..ㅡ.ㅡ..;

//박명정
안그래도 요즘 칼럼 게시판에 올라오는 글들을 보고 느낀게 있어 이 글을 쓰게 되었는데..
만약 그쪽에 올렸다간 위의 ... 들이 다 비난의 글로 바뀔듯..ㅎㅎ..
저장 취소
[코멘트] 좋음
2011-10-31 16:17
고요한 바다
공감. 설계보다 리팩토링. 그보다 테스트가 중요.
저장 취소
[코멘트] 좋음
2011-10-31 16:39
 gilgil  gilgil님께 메시지 보내기gilgil님을 내 주소록에 추가합니다.gilgil님의 개인게시판 가기 
칼럼 게시판에 올라 오는 글들 중에, 마치 자기는 마치 많은 경력을 가진 것처럼 얘기하는 경우가 많은데, 사실 보면 손발이 오글거립니다.

제 주위를 보면 우리나가 SW 개발 1세대는 아니더라도 요즘 개발의 중축을 이루는 사람들을 보게 되는데, 나이 많은 분들 많습니다.

경력 10년은 이제 축에도 끼지 않죠.
저장 취소
[코멘트] 좋음
2011-10-31 16:48
 freerose  freerose님께 메시지 보내기freerose님을 내 주소록에 추가합니다.freerose님의 개인게시판 가기 
경력 10년차가 넘어서야

이제 겨우 개발의 "개" 자가 보이는 단계인거 같습니다.
저장 취소
[코멘트] 좋음
2011-10-31 17:01
야근제로
음.. 2년차인데요..
결론적으로 (코딩 == 설계 ) 라는 말씀이신거 같은데 ..
그 코딩을 위한 설계가 필요하다고 생각되는데 ㅎㅎ
그럼 설계를 위한 설계가 되나요..? ㅎㅎ
코딩이 설계가 된다는게 이해가 안되어서 댓글 남겨봤습니다 ㅎㅎ

ps. 한 언어로 개발을 오래하신 분이라면.. 그 언어로의 코딩이 설계가 될지도 모른다는 생각도 드네요.. ㅎㅎ
저장 취소
[코멘트] 좋음
2011-10-31 17:28
진마
문서 작성하기 싫다는 말을 이렇게 거창하게 할 필요가 있나요?
저장 취소
[코멘트] 좋음
2011-10-31 17:45
ㅎㅎㅎㅎㅎ
//고요한 바다
이런 상황에서 공감답글 고맙습니다..ㅠ.ㅠ..
가변성이 큰 소프트웨어 개발에 있어서 설계보다는 유연한 개발방법이 더 실용적이지요.
말씀하신 리팩토링이나 테스트등은 중요한 실천 방법이라고 동의합니다.
저장 취소
[코멘트] 좋음
2011-10-31 17:52
 neltarion  neltarion님께 메시지 보내기neltarion님을 내 주소록에 추가합니다.neltarion님의 개인게시판 가기 
글 분위기는 혼자 횡설수설하는 듯 해 보여서 난해합니다. -_-;
저장 취소
[코멘트] 좋음
2011-10-31 19:59
불꽃개발자
ㅅㄱㅇ
저장 취소
[코멘트] 좋음
2011-10-31 23:21
편리스머프
글쎄요...
글쓴이의 내공이 어느정도이고, 프로젝트 스케일이 어느정도인지는 모르겠지만, 개발은 혼자하는 것이 아닙니다.
그리고, 이렇게, 사전 설계 없이...개발을 하게되면...소스코드가 내공에 의해서 개발은 되겠으나,
차후, 유지보수측면에서필요이상의 시간이 필요하지 않을까 생각됩니다.


흐음. 궁금합니다.
저장 취소
[코멘트] 좋음
2011-11-01 08:41
ㅎㅎㅎㅎㅎ
//편리스머프
소스코드의 복제본같은 도큐먼트 설계가 없을뿐 사전 구조화나 모델링이 없지는 않습니다.
계속 변화, 발전해가는 소프트웨어의 빠른 유지보수를 위해서 더욱 필요하지요.
다만 위의 짧은 글로 한쪽면만 강조하여 쓰다보니 오해가 있는듯 하네요..
저장 취소
[코멘트] 좋음
2011-11-01 08:51
 rjm9814  rjm9814님께 메시지 보내기rjm9814님을 내 주소록에 추가합니다.rjm9814님의 개인게시판 가기 
수고가 많으시네요...
저장 취소
[코멘트] 좋음
2011-11-01 09:54
생각의탄생
.....
저장 취소
[코멘트] 좋음
2011-11-01 10:09
 micron00  micron00님께 메시지 보내기micron00님을 내 주소록에 추가합니다.micron00님의 개인게시판 가기 
이경문 // 제가 그렇습니다만 -ㅁ- 경력3년차입니다.
사실 다른것보다 남의 일은 남이 더 잘안다고 생각합니다
(자신도 연예못하면서 남에게 연예하는 방법을 알려주면 상대방이 공감하는것과 비슷한? 단, 저는 연예 잘했음 ㅋ)
참고로 컬럼게시판의 경우 제가 저의 생각대로만 쓴게아니라(물론 그대로 긁어온것도 존재합니다)
제가 직접 쓰는 경우 잘못된 지식을 전달하지나 않을까 하는 생각에 동일한 자료를 여러번 찾아보고 읽어본다음 노심초사해서
글을 씁니다
저의 마인드라면 마인드겠지만 제가 필요없는? 혹은 사용하지 않는 지식이라도 남에게는 정말 필요한 지식이 될수도 있다는 생각에
쓴거니 오글거려도 참아주세요 ㅎ
저장 취소
[코멘트] 좋음
2011-11-01 10:11
 win3200  win3200님께 메시지 보내기win3200님을 내 주소록에 추가합니다.win3200님의 개인게시판 가기 
문서작성이냐 누구나 싫겠죠 -.-

그럼 나도


.......................
저장 취소
[코멘트] 좋음
2011-11-01 10:59
토마토소스
나이 많거나 경력 많거나를 떠나서
우리나라는 개발쪽의 선배분들이 후배들에게 남겨준 것들이 열악하죠.
최악의 상황만 만들어 놓고 떠나신 분들이 많아서..

머 첫 문장은 오글거리는 글이라도..
서로 공유되고 교정되어서 좋은 글이 나오는 거겠죠.

외국 개발자들이 쓴 빨간책들도 맨 처음엔 그냥 잡담이나 토로 수준의 글에서 시작되는 글들이었겠죠.

좋은 글 많이 부탁드립니다.
저장 취소
[코멘트] 좋음
2011-11-05 13:09
라카노
asdfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
저장 취소
[코멘트] 좋음
2011-11-07 15:34
 csh7963  csh7963님께 메시지 보내기csh7963님을 내 주소록에 추가합니다.csh7963님의 개인게시판 가기 
지금의 글 내용은 일정 부분 공감하는 부분이 있긴하나, 커다란 틀에서 볼 때도 공감할 수 있는 이야기인가...? 그렇지 않다는 것을 말하고자 합니다. 만일 이 말을 개발 5년 차가 했다면 애교로 봐줄 수 있는데, 10여년 개발한 사람의 생각이라면 조금 문제가 있습니다. Static 환경의 개발과 Runtime 환경에서의 실행을 놓고 굳이 어느 한 가지가 더 중요해야 한다는 시각이 무슨 의미가 있을까요? 이는 어디까지나 SW의 Lifecycle 상의 어느 관점에서 보느냐의 차이일 뿐 SW의 본질은 변하는게 아닙니다. 또, 문서가 필요한 것에 대한 이유를 잘못 이해하고 있는 듯하여 하는 말인데, Static 환경에서 문서를 작성하는 이유는,,, 개발은 혼자하는 작업이 아니기 때문입니다. 또 다양한 기능의 변화를 문서화하는 것이 그렇지 않은 경우보다 검증이 더 용이하기 때문입니다. 뿐만 아니라 SW 개발을 위해서는 위에서 언급한 단계보다 훨씬 더 많은 개발 단계와 활동이 필요하다는 것을 알아야 합니다. 제대로 된 도구와 장비로 SW를 개발하고 검증/시험/디버깅... 등을 경험한 10년차 개발자라면, SW 설계 뿐 아니라 기능 및 상위 시스템 설계를 여러 시각에서 분석하여 로직에 누락되기 쉬운 미묘한 결함들을 조기 발견하는 접근 방식이 개발 조직 전체의 이익에 기여하는 바가 매우 크다는 것을 반드시 배웠어야 정상입니다. 물론 이것은 제 의견이니 본인 스스로 뭐가 잘못되었는지 판단하시기 바랍니다. 제가 보기엔 상기의 그릇된 사고를 고치기에는 다소 늦은 나이인 듯 하지만...
저장 취소
[코멘트] 좋음
2011-11-07 16:06
 csh7963  csh7963님께 메시지 보내기csh7963님을 내 주소록에 추가합니다.csh7963님의 개인게시판 가기 
개발자들이 정말로 잘못 생각하는 것들이 있습니다. 기술만 중요하고 문서는 중요하지 않다는 생각... 많이 일반화 되었더군요. 그러나 그것이 개인 작업이 아닌 조직적인(즉 여러 실무자들이 필요한) 작업이라면 개발이고 영업을 떠나서 자신의 생각을 문서화해서 주위 사람들에게 공유하는 자세가 그 일의 성패를 50% 이상 좌우합니다. 그래서 개발자고 영업맨이고를 떠나서 기본 인성이 중요하다는 말입니다. 기술에 능한 것이 인성적으로 형편없어도 되는 이유일 수 없습니다.

축구를 예를 들면, 공격 시 공을 가지고 있지 않아도 공을 소유하며 공격 중인 동료 선수를 위해서 상대 수비수를 교란하는 선수가 있습니다. 이 선수, 가끔 공과 상관없는 공간으로 달려가기도 합니다. 이 선수의 목적은 직접 골을 성공시키는 것보다 팀의 다른 동료를 돕기 위해서 자신을 희생하는 것입니다. 이런 일을 축구팀 11명 전원이 해야 팀이 강해집니다. 그 누가 공을 잡건 말입니다. 프리미어리그의 다른 팀에는 없는데 맨유에는 있는 것이 바로 이것입니다. 이러한 희생의 목표는? 팀이 이기기 위한 것이겠죠?

물론 같이 일하는 팀 동료야 어찌되건 말건 내 할일만 할 수도 있습니다. 여기 문서화를 싫어하는 대다수의 이기적인 개발자들처럼 말이죠. 어느 축구선수 인터뷰에서인가 봤습니다. 수비 시 자신의 방어 지역에 침투된 공을 뻥뻥 내지르는 수비수가 있습니다. 공을 방어하고 빼앗은 공을 자신의 팀 공격수가 편하게 공격할 수 있도록 세밀하게 패스까지 책임져 줄 수도 있지만, 그렇게 하지 않고 그냥 내 자신의 책임 회피만을 위해서 뻥뻥 내지르는 수비수... 이런 선수 어떻게 보십니까? 결국 그 팀은 공격권을 계속 빼앗긴채로 경기를 하겠지요. 당근 이런 축구팀이 공격이라고 뭐 잘할 거 같나요? 팀이 제대로 공격력을 개편하려면 공격수가 아닌 이런 수비수 단속부터 해야 맞습니다.

자~! 이러한 생각을 개발 프로젝트와 연관시켜 보십시오. 동료 개발자에게 필요한 스펙이 어떻게 공유되건 말건, 나만 빨리 개발하면 되니까 문서도 없이 자신의 Source Code만 짜고 툭 던져대는... 그리고 내 할 일 끝났다고 빠져버리는 이런 개발자들은 그 경력이 5년이든 10년이든 근본 싹이 잘못된 자들입니다.

조직에서 경력 7년차 이상 되는 개발자들은 자신의 시간 중 적어도 50% 이상은 다른 동료를 위해서 투자하는 시간이 되어야 합니다. 그래야 전체 개발이 진척됩니다. 그리고 그 다른 동료를 위한 노력의 80%는 문서화를 통한 스펙 공유입니다. 이것을 제대로 경험하지 않고 쌓은 개발 경력 5년 10년 혹은 그 이상? 별 의미가 없습니다. 그러한 환경에서 그 개발자가 쌓은 어떠한 노력도 절반가량은 팀에 도움이 안되는 노력일 가능성이 많습니다.
저장 취소
[코멘트] 좋음
2011-11-07 23:41
ㅎㅎㅎㅎㅎ
글쓴지 일주일이 되었네요.. 공감하는 분이 적으니 더이상 이곳에서 글을 쓰는건 그만두기로하고..

혹시 윗글에 관심이 있었던 분들을 위해 정말 잘 정리된 블로그를 소개합니다.

Domain-Driven Design Essence
http://aeternum.egloos.com/2422827
저장 취소
[코멘트] 좋음
2011-11-22 14:17
No.190
;;;;
저장 취소
코멘트쓰기
  좋음   놀람   궁금   화남   슬픔   최고   침묵   시무룩   부끄럼   난감
* 코멘트는 500자 이내(띄어쓰기 포함)로 적어주세요.
목록 보기   지금 보고 계시는 글을 회원님의 my Mblog >> 스크랩에 넣어두고 다음에 바로 보실 수 있습니다.  
회사소개  |   개인정보취급방침  |  제휴문의  |   광고문의  |   E-Mail 무단수집거부  |   고객지원  |   이용안내  |   세금계산서
사업자등록번호 안내: 220-81-90008 / 통신판매업신고번호 제 2017-서울구로-0055호 / 대표: 홍영준, 서민호
08390, 서울시 구로구 디지털로32길 30, 1211호 / TEL. 02_6719_6200 / FAX. 02-6499-1910
Copyright ⓒ (주) 데브피아. All rights reserved.