소프트웨어 개발의 모든 것(김익환,전규현 지음. 페가수스)를 읽고 나서 중요한 몇 구절을 남겨본다.

요구사항의 중요성
소프트웨어 시스템 구축에서 가장 여려운 부분은 무엇을 구축할 것인지를 정확하게
판단하는 것이다. 그러나. 구현을 시작하기 전에 요구사항을 완벽하게 파악하는 것이
불가능한 경우가 많다. 그렇다고 해서 요구사항 개발에 소홀해서는 안 된다. 시간이
허락하는 한 최대한 많은 정보를 파악하는 것이 좋다.
 잘못된 요구사항은 많은 재작업 비용을 필요로 한다. 재작업 비용은 일반적으로 전체 개발
비용의 30~50%에 이르는 것으로 알려져 있다. 요구사항 오류로 인한 재작업 비용은 전체 재작업 비용의 70~85%에 이른다. 잘못된 요구사항, 부족한 요구사항은 일정을 지연시키며
많은 추가 비용을 발생시킨다.
 완벽하게 상세한 요구사항이 가장 좋은 요구사항은 아니다.
 요구사항은 이해하기 쉽게 간결함을 추구해야 한다. 간결하지만 충분히 설계, 구현할 수
있어야 한다. 그리고 요구사항 문서는 모든 관련자가 충분히 검토해야 한다.
요구사항 오류는 개발 단계가 지나가면 지나갈수록 그 수정비용이 기하급수로 증가한다.
유지보수 단계에서 비용이 더 드는 것으로 알려져 있다. 충분히 검토하여 오류가 없는
요구사항을 만드는 것이 프로젝트를 성공으로 이끄는데 가장 필요한 핵심이다.


SRS Template
1.Introduction(개요)
2.Overall Description(전체 설명)
3.Environment(환경)
4.External Interface Requirement(외부 인터페이스 요구사항)
5.Performance Requirement(성능 요구사항)
6.Non-Functional Reuirement(기능 이외의 요구사항)
7.Functional Requirement(기능요구사항)

코딩자세 : 소프트웨어를 잘 구현하기 위해서는 코딩을 함에 있어 반드시 지켜야 할 것들이 있다.
* 회사의 코딩표준을 철저히 지켜야 한다.
* 버그가 발견되면 그 즉시 버그를 고쳐라.
* 발견된 버그가 재현이 안 된다고 해서 버그가 사라진 것이 아니다.
* 문제 없이 작동하고 있는 코드를 괜히 정리하려고 하지 마라.
* 문제가 해결될 때까지 이렇게 저렇게 마구 고치지 마라.
* 코딩 작업을 작게 나누어서 코딩, 빌드, 테스트를 자주 반복하라.
* 중요하지 않은 버그는 하나도 없다.

회사의 코딩표준을 지켜야 하는 이유.
* 소스코드의 작성법을 통일하여 개발자들끼리 서로 코드를 더 쉽게 이해할 수 있게 한다.
* 개발자가 바뀌어도 빠른 시간 안에 소스코드를 파악 할 수 있게 한다.
* 흔히 저지르기 쉬운 사소한 실수를 방지하여 제품의 품질을 높인다.

품질관리
 소프트웨어프로젝트에서 품질은 소프트웨어가 얼마나 요구사항을 잘 만족시키고
 있는가의 정도이다. 품질은 전적으로 테스트에만 의존하는 것이 아니다.
 잘 만들어진 프로젝트 계획, 잘 분석된 요구사항, 각 단계의 철저한 리뷰,
체계적인 테스트 등 프로젝트 전 과정에 걸친 일련의 활동들이 모여서
제품의 품질을 보장하게 된다.
 많은 개발자들이 소프트웨어의 품질에 큰 관심을 두지 않는다. 현재 프로젝트를 끝내고
빨리 새로운 프로젝트를 하고 싶어한다. 현재의 문제는 유지보수에서 해결할 수 있을
것으로 생각하기도 한다. 이러한 생각은 제품의 품질을 떨어뜨리고, 제품을 제 때에
출시하지 못하게 만들기도 한다. 품질을 포기하고 제때 출시된 제품은 정시 출시에 대한
의미조차  없다. 고객들은 제품의 품질을 계속 기억할 것이고, 추후 더 나은 제품에 대한 기억이 사라지지 않을 것이다. 일반적으로 소프트웨어의 유지보수에 개발 지용의 2~5배가
지불된다고 알려져 있다. 최초에 낮은 품질로 출시된 제품은 유지보수 비용을 지속적으로 증가시킨다.
 유지보수 비용을 간과하면 장기적으로 제품의 수익성에 심각한 저하를 가져올 수 있다.
그럼에도 불구하고 소프트웨어 개발 시에 유지보수에 대해 신경을 쓰지 못하는 경우로
다음과 같은 것들이 있다.

* 당장 프로젝트가 발등에 떨어진 불이라서 유지보수에 대해서는 신경 쓸 겨를이 없다.
* 유지보수는 다른 개발팀이 맡을 것이므로 신경 쓰지 않는다.
* 경험이 별로 없어서 유지보수에 많은 비용이 드는지 몰랐다.
* 유지보수에 비용이 얼마나 드는지 정확하게 따져본 적이 없다.

제품의 품질을 유지보수 기간으로 넘길 것이 아니고, 지금 바로 품질에 대해서 신경을 쓰는 것이 경제적으로 더 바람직하다.

리스크 관리
리스크 계획 중 개발자가 퇴사할 징후가 보일때 다음과 같은 대응책을 마련할 수있다.
* 개발자가 퇴사하지 않도록 노력한다.
* 개발자가 퇴사하더라도 보충할 개발자를 미리 사내에서 물색해 놓는다.
* 사내에서 보충할 개발자를 찾지 못하면, 외부 채용 활동의 준비 단계를 해 놓는다.
   즉, 채용공지를 하고 이력서를 분석하여 채용자 후보를 미리 물색해 놓는다.
* 해당 개발자이 모듈을 다른 개발자와 많은 부분 공유하도록 계획한다.
* 아예 해당 개발자를 프로젝트에서 제외하고 진행한다.

동기 유발 요인 : 프로젝트에서 개발자의 동기를 유발하는 요인에는 다음과 같은 것들이 있다.
* 목표설정, 성취감, 성장가능성, 개인생활의 보장, 포상.

프로젝트 팀이 하는 작업 리스트
* SRS 작성 및 검토
* 소프트웨어 아키텍처 설계 논의
* 소프트웨어 컴포넌트와 인터페이스 논의
* 소프트웨어 설계 리뷰
* 소스코드 리뷰
* 결함 추척 및 해결
* 중요 이슈 논의
* 유지보수

성공하는 팀의 특징
* 훌륭한 기술리더가 있다.
* 도전적이고 실천가능한 목표와 비전을 공유하고 있다.
* 실력 있고 헌신적인 팀원들로 구성되어 있다.
* 팀원들간에 서로 신뢰한다.
* 팀원들간에 의사소통이 원활하다.
* 팀이 적절한 권한과 자율성이 있다.
* 팀워크를 유지하기에 알맞은 팀이다.

실패하는 팀
* 비전이 공유되어 있지 않다.
* 팀원들간에 서로 신뢰하지 않는다.
* 팀원들 간 의사소통이 원활하지 않다.
* 문제 팀원 방치.
 
필자의 경험에 의하면 프로젝트를 망치는 길은 지뢰밭과 같이 많아도
성공하기 위한 비법은 없다. 기본에 충실하고 기초와 문화가
각각 개발자들 몸에 배어서
앞에서 언급된 여러 활동들이 종합적으로
자연스럽게 이루어 질 때
소프트웨어 프로젝트 성공이 좀더 가까워 질 것이다.

개발자들은 가장 먼저
* SRS를 작성해야 한다고 생각하고,
* SRS를 작성하면서 모든 관련자와 철저히 리뷰를 하고,
* 프로젝트 관리자는 개발자들과 함께 1,2일 단위의 상세 일정을 작성하고,
* 테스트팀은 SRS를 보고 테스트 Suite를 만들기 시작하고,
* 개발 리더들은 화이트보드나 종이를 펼쳐놓고 아키텍처에 대해 토론을 하며,
* 구현 시 모든 소스코드는 당연히 리뷰를 하고,
* 개발자는 매일 스스로 일정을 업데이트하고,
* 소스코드 작성은 일일빌드가 깨지지 않으면서 이루어지며,
* 소스코드관리시스템과 버그관리시스템을 효과적으로 사용하며,
* 알파, 베타 단계 별로 모든 프로젝트 관련자들이 유기적으로 움직이며,
* 일정에 맞춰 완성도 있는 품질의 제품을 출시한다.

위와 같은 활동들이 당연하다고 생각되고 몸에 배어야 한다.
이러한 것들을 규칙만으로 통제를 해서는 달성하기 어렵고 한꺼번에 모두 다 습득하기도 어렵다.
하나씩 익혀서 몸에 배었을 때 소프트웨어 프로젝트를 성공하는 원리가 보이기 시작하고,
좋은 제품을 만들 수 있을 것이다.

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)

Posted by 홍반장

2011/03/26 15:25 2011/03/26 15:25
, , , ,
Response
No Trackback , No Comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/5997

소프트웨어 개발의 모든 것
 - 경영자에서 개발자까지 소프트웨어 회사에서 반드시 알아야 할 핵심 노하우
김익환 , 전규현 지음 | 페가수스 펴냄

소프트웨어 개발을 위한 단 하나의 바이블!

이 책은 단순한 소프트웨어 공학 책이 아니다. 저자의 25년 소프트웨어 개발 경험과 이론이 응축된 결과물이다. 이 책에는 미국의 실리콘밸리, 한국의 대표적 소프트웨어 회사 안철수연구소의 개발 프로세스와 개발 인프라를 만들고 발전시킨 경험이 담겨 있다. 소프트웨어 개발자나 프로젝트 관리자는 물론 개발 부서장, 기획자 등 소프트웨어 개발에 관련된 모든 사람들이 반드시 읽어봐야 할 책이다. - 강은성 (SK커뮤니케이션즈 커뮤니티개발실장)

소프트웨어를 구현하고 개발을 관리하면서, ‘어떻게 하면 여러 명이 이 일을 함께 잘 할 수 있을까?’ 하고 늘 고민해왔다. 결론은 ‘기본에 충실’이다. 이 책은 실용적인 도구, 프로세스, 문화에 대한 설명을 통해 어떻게 소프트웨어 개발의 기본에 충실할 수 있는 지를 알려준다. - 조재희 (휴맥스 혁신실 부장)

소프트웨어 개발을 직업으로 준비 중인 모든 신입 개발자들에게 가장 추천할 만한 입문서다. 이 책을 읽으면서 떠오른 한 가지 생각은, ‘우리나라 소프트웨어 개발자 중 과연 몇 명이나 이 책에 수록된 지식들을 숙지하고 있을까?’ 하는 의문이다. 국내 모든 소프트웨어 개발 종사자들이 꼭 한번 확인해보아야 할 책이라고 생각한다. - 민상윤 (KAIST 겸임교수, 솔루션링크 대표)

차                례
- 프롤로그

Part1 소프트웨어 개발의 기초

1. 기반시스템
기반시스템이 잘 구축된 사례|기반시스템이 잘 구축되지 않은 사례|소스코드관리시스템
빌드시스템|버그관리시스템|테스트관리시스템과 테스트 자동화툴|프로젝트관리시스템
요구사항관리시스템

2. 조직
프로젝트 구성원의 역할 |조직체계

3. 개발방법론과 프로세스
소프트웨어 개발방법론|소프트웨어 개발 프로세스

4. 사람
인재 확보|문서 작성 기술

5. 문화
동료 리뷰|연구|공유|품질 우선|규칙 준수|장기적인 관점으로 보기

Part2 소프트웨어 개발을 성공으로 이끄는 법

6. 생애주기 모델을 제대로 선택하라
폭포수 모델|반복 모델|XP 모델|사시미 모델|발전적 프로토타이핑 모델

7. 개발 단계별 계획을 수립하라
개발의 각 단계|단계별 인원 투입|단계별 일정 분배

8. 프로젝트 활동을 확실하게 관리하라
프로젝트 성공 기준 마련|개발 계획|일정관리|요구사항 분석|설계|구현|품질관리
리스크관리|인력관리|의사소통관리|원가관리

- 마무리
- 용어설명

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2010/11/17 14:06 2010/11/17 14:06
, ,
Response
No Trackback , a comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/5656

가난뱅이의 역습 - 무일푼 하류인생의 통쾌한 반란!
 
사용자 삽입 이미지
: 한국의 88만원세대, 일본의 버블세대, 유럽의 천유로세대 등 양극화사회에서 점점 가난으로 내몰리는 젊은이들의 생존전략을 유머러스하게 담은 책. 공짜로 살아가는 생활 기술과 가난뱅이의 등골을 빼먹는 사회에 대항하는 반란의 노하우를 유머로 승화시켜 전달하고 있다. 자본주의와 신자유주의에 대항하는 일환으로 재활용가게를 운영하고 있는 저자만의 유쾌하고 기발한 방식으로 양극화가 심화되는 사회에 대소동을 일으켜 가난뱅이들이 창궐하는 세상을 바꾸자고 이야기한다.
싼 집을 얻기 위해 노숙을 하고, 밥값을 아끼기 위해 걸식을 하며, 맥도날드 햄버거 하나로 세끼를 때우기도 하고 때로는 먹튀(먹고 튀는)작전까지 행할 수 밖에 없는 이 시대의 모습을 재미있는 일러스트와 함께 날카롭게 꼬집으며 희화화하였다. 또한 사회의 약자로 착취당하며 살고 있는 가난한 젊은세대가 주체가 되어 지역에서 연대하며 살아가기, 재활용 혁명 등 새로운 공동체를 만드는 실천적인 방법 또한 제시하고 있다.







행복은 혼자 오지 않는다 - 웃기는 의사 히르슈하우젠의 도파민처럼 짜릿한 행복 처방전
 
사용자 삽입 이미지
: 독일의 의사이자 코미디언인 에카르트 폰 히르슈하우젠이 쓴, 행복에 대한 상식을 깨는 책. 의술 없이도 사람들을 건강하게 만들 줄 아는 저자는 유쾌하고 에너지 넘치게 살아가는 법을 차근차근 일러준다. 행복을 좇는 것이 아니라 행복이 스스로 찾아오게끔 하라고 조언하며, 행복을 ‘공동의 행복’, ‘우연의 행복’, ‘순간의 행복’, ‘자기극복의 행복’, ‘충만한 행복’으로 분류해 우리가 스스로 행복해질 수 있는 다양하고 기발한 방법에 대해 말한다.
과연 우리를 진짜로 행복하게 만드는 것은 무엇일까? 이 책은 이 물음에 대한 답을 심리학과 신경생물학적 연구 결과를 기반으로, 의사로서의 지식과 경험을 들어 재밌고 설득력 있게 제시한다. 행복을 갈구하는 우리의 태도를 조급해하지 않고 편안한 마음을 가질 수 있도록 변모시키며, 일상생활과 밀접한 주제들을 유머가 섞인 이야기로 만들어 고유의 행복론을 전한다. 특유의 재치 있는 문체, 행복한 색감의 일러스트와 유머러스한 사진이 재미를 더한다.








생각 버리기 연습
사용자 삽입 이미지
 : 일본 열도를 뒤흔든 생각 버리기 연습법을 담은 책. 어떻게 해야 복잡하고 쓸데없는 생각을 버릴 수 있을까? 저자는 우선 우리를 괴롭히는 잡다한 생각의 정체를 바로 알아야 한다고 이야기한다. 잡다한 생각의 근본 원인을 파악했다면, 그 다음은 우리의 일상생활에서 어떻게 적용할지에 대해 알아야 할 것이다. 저자는 이 과정을 말하기, 듣기, 보기 같은 8가지 영역으로 나누고, 우리의 일상생활에서 바로 실천할 수 있는 방법을 제시한다.
예를 들어 ‘말하기’ 영역에서는 자신의 감정을 ‘응시’하는 법에 대해 이야기한다. 만약 분노 에너지가 들끓어 화가 난다고 생각되면, 이 감정을 따옴표로 묶어버린다. 즉 ‘화가 난다’가 아니라 ‘나는 화가 난다고 생각한다’라고 감정을 객관적으로 바라보는 법을 익히는 것이다. 이렇게 일상에서 바로 실천할 수 있는 방법을 몸에 익히면, 우리를 괴롭히는 복잡하고 쓸데없는 생각으로부터 자유로워지게 될 것이다.

 






글로벌 소프트웨어를 꿈꾸다
사용자 삽입 이미지
 : 성공하는 소프트웨어 회사에서 일하고 싶다
국내 소프트웨어 업계는 눈부신 발전을 해 왔다. 특히 기술과 기법에서는 세계 수준에 뒤떨어지지 않는다고 해도 과언이 아니다. 어느 정도 성공도 이뤘다. 그런데 왜 인도나 이스라엘처럼 세계적으로 성공한 글로벌 소프트웨어 회사는 나오지 않을까? 그 이면에 문화적인 요소가 있다. 세계 수준에 근접한 기술과 기법은 그에 걸맞는 균형 잡힌 사고와 문화 수준이 어우러질 때 극대화될 수 있다. 이것은 의식적으로 노력한다고 해서 쉽게 바꿀 수 있는 것이 아니다. 사고와 문화 수준은 회사 구성원 모두에게 내재된 것이며 무의식적인 행동으로 드러나기 때문이다. 무의식적인 행동으로 드러나는 것을 바꾸는 것은 어렵다. 개발 과정에서 항상 문서를 작성하고, 어떤 환경에서도 동료검토하는 것을 당연시 여기는 것은 내재화된 문화에서만 가능하다. 그리고 이런 내재화된 문화는 소프트웨어의 본질에 대한 확고한 신념을 갖고 있을 때 형성될 수 있다. 이런저런 핑계로 하지 않는다면 그것은 표면적인 지식에 불과하다. 문화로 내재화된 것이 아니다. 소크라테스, 데카르트와 같은 선각자들이 가르치려고 했던 것은 본질에 대한 심오한 통찰력이었다. 이 책은 소프트웨어의 문화, 본질, 그리고 통찰력에 관한 책이다.





크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)

Posted by 홍반장

2010/11/02 19:44 2010/11/02 19:44
, , , , , ,
Response
No Trackback , 4 Comments
RSS :
http://tcbs17.cafe24.com/tc/rss/response/5608


블로그 이미지

- 홍반장

Archives

Recent Trackbacks

Calendar

«   2024/04   »
  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        
Statistics Graph

Site Stats

Total hits:
181295
Today:
174
Yesterday:
209