SlideShare a Scribd company logo
1 of 13
Download to read offline
소프트웨어 개발과
Agile Skill Set
소프트웨어를 잘 만드는 Skill Set
이세영 (effectiveprogramming.tistory.com)
/12
어떻게 해야 소프트웨어를 잘 만들 수 있을까?
Product
People
Process
: Software
: Software 개발자들
: Software 개발 방법
1
/12
Product : 소프트웨어 산업의 성장
소프트웨어는 지속적으로 적용 분야와 규모가 확장되어 왔음.
관련도서
* 존 폰 노이만 그리고 현대 컴퓨팅의 기원(윌리엄 어스프레이)
* 누가 소프트웨어의 심장을 만들었나(박지훈)
* 구글의 미래(토마스 슐츠)
2
1930~
1940~
1950~
1960~
1970~
1980~
1990~
2000~
2010~
컴퓨터 (암호해독)
군사(탄도궤적,폭발계산)
과학연구(일기예보)
고등제조(우주선)
PC출현
PC시대(GUI, 마우스)
WWW
SNS, 집단지성
IoT, 빅데이터
2016. 3. 9~ 인공지능
/12
Product : 소프트웨어가 가져야 할 특성
좋은 소프트웨어는 1. 하드웨어 자원 사용을 최소화하고(효율성),
2. 요구사항을 쉽게 반영할 수 있어야 한다(유연성).
Computer : 빠른 범용 계산 기계
Software
소통성
Communication
효율성
Efficiency
유연성
Flexibility
소프트웨어의 규모는 계속 커지고,
개발자 간의 “협력”을 필요로 한다.
하드웨어 자원 사용의 최소화
(속도, 메모리)
새로운 요구사항을 쉽게 반영할 수 있는
소프트웨어의 구조적 특성
: 가장 빠른 컴퓨팅 요소 : 가장 유연한 컴퓨팅 요소
소프트웨어가 가져야 할 특성
관련도서
* 켄트 벡의 구현패턴(켄트 벡)
Hardware
3
/12
 사람들의 데이터를 나이 순서로 정렬하는 방법?
 전제 : 200 살 이상 사는 사람은 없다
자료구조와 알고리즘 : 효율성(Efficiency)
“효율적인 알고리즘은 전제를 통해 더 단순한 해결책을 제시하고, 오차와 비용 사이의
trade-off를 통해 기회를 제공한다.” - Brian Christian, Tom Griffiths -
Time Complexity
8 4 6 2 5
1 2 3 4 5 6 7 8 200……
……나이 :
4
Quick Sort /
Merge Sort
O(NlogN)
O(logN)
O(N)
O(N)
메모리주소 :
연결리스트 :
Bucket Sort
O(N)
O(1)
/12
객체지향(Object Oriented Programming) : 유연성(Flexibility)
 이상적인 소프트웨어 : (새로운 요구사항이 와도) 수정할 필요가 없는 소프트웨어
 좋은 소프트웨어 : (새로운 요구사항이 와도) 기존의 코드를 수정할 필요가 없는 소프트웨어
요구사항 변경 시 기존 코드에 대한 수정을 최소화하여 유연성을 높여주는 언어적 특성
1. 추상화(Abstraction)
2. 캡슐화(Encapsulation = 대상화)
3. 상속(Inheritance)
4. 다형성(Polymorphism)
추가 삭제
유연성(Flexibility)
변경
5
/12
디자인 패턴(Design Patterns) : 유연성(Flexibility) + 소통성(Communication)
소프트웨어의 설계적인 문제를 해결하는 검증된 구조에 명칭을 부여한 것
트라야누스 다리(101~103년 건축)
아치 패턴(퐁 뒤 가르 수도교, AD 1세기) 로마 가도(BC 5세기 ~ 로마시대)
교각에는 “아치 패턴”을 썼군.
그래서 튼튼하고 물이 흐를 공
간이 넓어.
상판에는 “가도 패턴”을 썼어.
그래서 가도와의 연결과
왕복 이동이 원활해.
관련도서
* 로마인 이야기(시오노 나나미)
6
/12
UML(Unified Modeling Language, 그래디 부치) : 소통성(Communication)
 조직의 업무를 파악하기 위해서
• 조직 구성팀 전체를 만나봐야 한다면?
- 시간이 많이 걸린다.
• 조직도가 있다면 업무 파악에 도움이 된다.
 UML : 소프트웨어의 구조를 파악하기 위함
• 개발자 간의 의사소통, 소프트웨어에 대한 가시성, 복잡한 구조에 대한 명확한 설명이 가능.
객체 지향 소프트웨어의 설계를 시각적인 기호로 표현해주는 표준 언어
개발센터
기획팀
개발팀
특허팀
구매팀
사업부
동적 다이어그램정적(구조) 다이어그램
7
/12
Unit Test(켄트 벡, 에릭 감마) : 유연성(Flexibility)
 간접 검증 원리
• 소프트웨어의 로직을 직접 들여다 보지 않는다.
• 검증용 소프트웨어로 제품 소프트웨어를 검증한다.
 불완전한 소프트웨어로 소프트웨어를 검증한다?
• 검증용 소프트웨어가 (검증 대상 보다) 단순하고 간결하다.
• 테스트 되지 않은 소프트웨어보다 테스트 된 소프트웨어가 더 낫다.
 검증 전략
• 객체 단위로 테스트한다.(작은 소프트웨어)
• 자주, 빠르게 테스트 한다.(수정에 의한 오류 발생 방지)
복잡한 소프트웨어를 테스트 소프트웨어로 반복적으로 테스트한다.
소프트웨어
검증용 소프트웨어
(Unit Test)
복잡하다
스스로 검증이 불가능하다
간결하다
단순하다
다른 소프트웨어를 검증할 수 있다
소리를 통해 엔진을 진단한다
(엔진을 직접 들여다 보지 않는다.)
8
/12
리팩토링(Refactoring) : 유연성(Flexibility)
“디자인 패턴은 리팩토링의 지향점이고, 리팩토링은 다른 상태에서 그 지향점까지 도달하는 방법이다.”
(새로운 요구사항을 반영하기 위해) 이미 만들어진 소프트웨어의 기능을 그대로 두고
설계를 개선하는 기법
*노트르담 대성당의 벽 날개(Flying Buttresses). 초기 설계에 의해서 만들어진
것이 아니라 시공 시 발생한 균열을 해결하기 위해 덧붙였다. 현재는 그 조형미
를 인정 받고 있다.
- 리팩토링(마틴 파울러)
9
/12
Process : Agile 방법론
 목표 : 소프트웨어의 효율성 / 유연성 / 소통성 확보
 결함의 개수 = 시간 X 복잡도
“문제의 복잡성이 25% 증가하면 솔루션의 복잡성은 100% 증가한다.”
객체지향
디자인패턴
리팩토링
Unit Test
설계요구사항 UML
요구사항1
요구사항2
요구사항3
설계 구현
설계 구현 테스트
리팩토링설계 구현 테스트
“Agile Skill Set”
유연성 + 소통성 효율성
관련도서
* 우리가 미처 알지 못한 SW 공학의
사실과 오해(로버트 L. 글래스)
* 토비의 스프링 3.1(이일민)
코드 수정 안전망
구현 테스트
자료구조
알고리즘
테스트
10
/12
People : 인사제도
“소프트웨어 직업에서 가장 중요한 요소는 프로그래머의 자질이다.”
“최고의 프로그래머는 최하의 프로그래머보다 28배 뛰어나다.”
효율성/유연성/소통성을 위한 기술을 갖추고 다른 사람과 협력할 줄 아는 사람을 키워
가는 인사제도를 지향해야 함.
업무 교육 및 학습평가채용
효율 유연소통
동료평가, 다면평가 사내 스터디그룹,
SW 강의 체계
Agile Process
Agile Skill Set
P1
P3
P4
코딩 면접
채용 프로세스 개선 피드백
관련도서
* 우리가 미처 알지 못한 SW 공학의 사실과 오해(로버트 L. 글래스)
* 구글의 아침엔 미래가 열린다(라즐리 복)
11
/12
소프트웨어를 잘 만드는 방법
 Product : Software
 Process : Agile 방법론
 People : 인사제도
소프트웨어를 이해하고 인간을 존중하는 문화 속에서 좋은 소프트웨어가 만들어진다.
리팩토링요구사항n 설계 구현 테스트
Unit Test
효율성 유연성 소통성
Hardware Software
Computer Human
대규모 소프트웨어 개발은
개발자 간 소통과 협력이
원활해야 가능하다.
인간은 크고 복잡한 것을
이해하는 능력이 떨어지고,
오래된 것은 잊어버린다.
효율성/유연성/소통성을 갖추고
다른 사람과 협력할 줄 아는
사람을 키워가야 한다.
업무 교육 및 학습평가채용
채용 프로세스 개선 피드백
반복
객체지향
디자인패턴
리팩토링
Unit Test
UML자료구조
알고리즘
12
“Agile Skill Set”

More Related Content

Similar to 소프트웨어 개발과 Agile skill set

User interface design: 10 researchers' general UI/UX design principles
User interface design: 10 researchers' general UI/UX design principlesUser interface design: 10 researchers' general UI/UX design principles
User interface design: 10 researchers' general UI/UX design principleslynnific
 
Future Command and Control Systems Should Combine Decision Support and Person...
Future Command and Control Systems Should Combine Decision Support and Person...Future Command and Control Systems Should Combine Decision Support and Person...
Future Command and Control Systems Should Combine Decision Support and Person...Slava Han
 
Mid-term Report
Mid-term ReportMid-term Report
Mid-term ReportJongHyoun
 
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규ChangKyu Song
 
자본시장IT의 미래 오픈소스에서 답을 구하라
자본시장IT의 미래 오픈소스에서 답을 구하라자본시장IT의 미래 오픈소스에서 답을 구하라
자본시장IT의 미래 오픈소스에서 답을 구하라heungjae Kim
 
모바일시대의프로토타이핑 (@웹월드컨퍼런스, 2014.11.19)
모바일시대의프로토타이핑 (@웹월드컨퍼런스, 2014.11.19)모바일시대의프로토타이핑 (@웹월드컨퍼런스, 2014.11.19)
모바일시대의프로토타이핑 (@웹월드컨퍼런스, 2014.11.19)keesung kim
 
제4회 아키텍트대회 발표자료 유엔진솔루션즈 장진영 V1.2[1] 110624
제4회 아키텍트대회 발표자료 유엔진솔루션즈 장진영 V1.2[1] 110624제4회 아키텍트대회 발표자료 유엔진솔루션즈 장진영 V1.2[1] 110624
제4회 아키텍트대회 발표자료 유엔진솔루션즈 장진영 V1.2[1] 110624uEngine Solutions
 
[한국핀테크포럼] 회원사소개: 한컴V핀테크
[한국핀테크포럼] 회원사소개: 한컴V핀테크 [한국핀테크포럼] 회원사소개: 한컴V핀테크
[한국핀테크포럼] 회원사소개: 한컴V핀테크 Hyeseon Yoon
 
develop android app using intellij
develop android app using intellijdevelop android app using intellij
develop android app using intellijSewon Ann
 
스프링보다 중요한 스프링 이야기
스프링보다 중요한 스프링 이야기스프링보다 중요한 스프링 이야기
스프링보다 중요한 스프링 이야기Sungchul Park
 
2 trizcon 기술진화법칙과 디지털컨버전스_강시내
2 trizcon 기술진화법칙과 디지털컨버전스_강시내2 trizcon 기술진화법칙과 디지털컨버전스_강시내
2 trizcon 기술진화법칙과 디지털컨버전스_강시내Youngmin Kim
 
Slipp 발표 자료 20151212
Slipp 발표 자료 20151212Slipp 발표 자료 20151212
Slipp 발표 자료 20151212Jinsoo Jung
 
20120605 클라우드 컴퓨팅 서비스의 이해
20120605 클라우드 컴퓨팅 서비스의 이해20120605 클라우드 컴퓨팅 서비스의 이해
20120605 클라우드 컴퓨팅 서비스의 이해김호천
 
넥스프라사업소개제안서
넥스프라사업소개제안서넥스프라사업소개제안서
넥스프라사업소개제안서(주)핑거
 
EMOCON 2015 - 품질과 테스트는 다르다
EMOCON 2015 - 품질과 테스트는 다르다EMOCON 2015 - 품질과 테스트는 다르다
EMOCON 2015 - 품질과 테스트는 다르다이상한모임
 
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)SangIn Choung
 
[NEMO-UX] HCIK 2016 다중 사용자용 운영체제 FINE 플랫폼 소개와 SKT 협력 사례 발표
[NEMO-UX] HCIK 2016 다중 사용자용 운영체제 FINE 플랫폼 소개와 SKT 협력 사례 발표 [NEMO-UX] HCIK 2016 다중 사용자용 운영체제 FINE 플랫폼 소개와 SKT 협력 사례 발표
[NEMO-UX] HCIK 2016 다중 사용자용 운영체제 FINE 플랫폼 소개와 SKT 협력 사례 발표 nemoux
 
Event storming based msa training commerce example add_handson_v3
Event storming based msa training commerce example add_handson_v3Event storming based msa training commerce example add_handson_v3
Event storming based msa training commerce example add_handson_v3uEngine Solutions
 

Similar to 소프트웨어 개발과 Agile skill set (20)

User interface design: 10 researchers' general UI/UX design principles
User interface design: 10 researchers' general UI/UX design principlesUser interface design: 10 researchers' general UI/UX design principles
User interface design: 10 researchers' general UI/UX design principles
 
Future Command and Control Systems Should Combine Decision Support and Person...
Future Command and Control Systems Should Combine Decision Support and Person...Future Command and Control Systems Should Combine Decision Support and Person...
Future Command and Control Systems Should Combine Decision Support and Person...
 
Mid-term Report
Mid-term ReportMid-term Report
Mid-term Report
 
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
 
자본시장IT의 미래 오픈소스에서 답을 구하라
자본시장IT의 미래 오픈소스에서 답을 구하라자본시장IT의 미래 오픈소스에서 답을 구하라
자본시장IT의 미래 오픈소스에서 답을 구하라
 
모바일시대의프로토타이핑 (@웹월드컨퍼런스, 2014.11.19)
모바일시대의프로토타이핑 (@웹월드컨퍼런스, 2014.11.19)모바일시대의프로토타이핑 (@웹월드컨퍼런스, 2014.11.19)
모바일시대의프로토타이핑 (@웹월드컨퍼런스, 2014.11.19)
 
제4회 아키텍트대회 발표자료 유엔진솔루션즈 장진영 V1.2[1] 110624
제4회 아키텍트대회 발표자료 유엔진솔루션즈 장진영 V1.2[1] 110624제4회 아키텍트대회 발표자료 유엔진솔루션즈 장진영 V1.2[1] 110624
제4회 아키텍트대회 발표자료 유엔진솔루션즈 장진영 V1.2[1] 110624
 
[한국핀테크포럼] 회원사소개: 한컴V핀테크
[한국핀테크포럼] 회원사소개: 한컴V핀테크 [한국핀테크포럼] 회원사소개: 한컴V핀테크
[한국핀테크포럼] 회원사소개: 한컴V핀테크
 
develop android app using intellij
develop android app using intellijdevelop android app using intellij
develop android app using intellij
 
스프링보다 중요한 스프링 이야기
스프링보다 중요한 스프링 이야기스프링보다 중요한 스프링 이야기
스프링보다 중요한 스프링 이야기
 
2 trizcon 기술진화법칙과 디지털컨버전스_강시내
2 trizcon 기술진화법칙과 디지털컨버전스_강시내2 trizcon 기술진화법칙과 디지털컨버전스_강시내
2 trizcon 기술진화법칙과 디지털컨버전스_강시내
 
Custom assert
Custom assertCustom assert
Custom assert
 
발표원고
발표원고발표원고
발표원고
 
Slipp 발표 자료 20151212
Slipp 발표 자료 20151212Slipp 발표 자료 20151212
Slipp 발표 자료 20151212
 
20120605 클라우드 컴퓨팅 서비스의 이해
20120605 클라우드 컴퓨팅 서비스의 이해20120605 클라우드 컴퓨팅 서비스의 이해
20120605 클라우드 컴퓨팅 서비스의 이해
 
넥스프라사업소개제안서
넥스프라사업소개제안서넥스프라사업소개제안서
넥스프라사업소개제안서
 
EMOCON 2015 - 품질과 테스트는 다르다
EMOCON 2015 - 품질과 테스트는 다르다EMOCON 2015 - 품질과 테스트는 다르다
EMOCON 2015 - 품질과 테스트는 다르다
 
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
 
[NEMO-UX] HCIK 2016 다중 사용자용 운영체제 FINE 플랫폼 소개와 SKT 협력 사례 발표
[NEMO-UX] HCIK 2016 다중 사용자용 운영체제 FINE 플랫폼 소개와 SKT 협력 사례 발표 [NEMO-UX] HCIK 2016 다중 사용자용 운영체제 FINE 플랫폼 소개와 SKT 협력 사례 발표
[NEMO-UX] HCIK 2016 다중 사용자용 운영체제 FINE 플랫폼 소개와 SKT 협력 사례 발표
 
Event storming based msa training commerce example add_handson_v3
Event storming based msa training commerce example add_handson_v3Event storming based msa training commerce example add_handson_v3
Event storming based msa training commerce example add_handson_v3
 

소프트웨어 개발과 Agile skill set

  • 1. 소프트웨어 개발과 Agile Skill Set 소프트웨어를 잘 만드는 Skill Set 이세영 (effectiveprogramming.tistory.com)
  • 2. /12 어떻게 해야 소프트웨어를 잘 만들 수 있을까? Product People Process : Software : Software 개발자들 : Software 개발 방법 1
  • 3. /12 Product : 소프트웨어 산업의 성장 소프트웨어는 지속적으로 적용 분야와 규모가 확장되어 왔음. 관련도서 * 존 폰 노이만 그리고 현대 컴퓨팅의 기원(윌리엄 어스프레이) * 누가 소프트웨어의 심장을 만들었나(박지훈) * 구글의 미래(토마스 슐츠) 2 1930~ 1940~ 1950~ 1960~ 1970~ 1980~ 1990~ 2000~ 2010~ 컴퓨터 (암호해독) 군사(탄도궤적,폭발계산) 과학연구(일기예보) 고등제조(우주선) PC출현 PC시대(GUI, 마우스) WWW SNS, 집단지성 IoT, 빅데이터 2016. 3. 9~ 인공지능
  • 4. /12 Product : 소프트웨어가 가져야 할 특성 좋은 소프트웨어는 1. 하드웨어 자원 사용을 최소화하고(효율성), 2. 요구사항을 쉽게 반영할 수 있어야 한다(유연성). Computer : 빠른 범용 계산 기계 Software 소통성 Communication 효율성 Efficiency 유연성 Flexibility 소프트웨어의 규모는 계속 커지고, 개발자 간의 “협력”을 필요로 한다. 하드웨어 자원 사용의 최소화 (속도, 메모리) 새로운 요구사항을 쉽게 반영할 수 있는 소프트웨어의 구조적 특성 : 가장 빠른 컴퓨팅 요소 : 가장 유연한 컴퓨팅 요소 소프트웨어가 가져야 할 특성 관련도서 * 켄트 벡의 구현패턴(켄트 벡) Hardware 3
  • 5. /12  사람들의 데이터를 나이 순서로 정렬하는 방법?  전제 : 200 살 이상 사는 사람은 없다 자료구조와 알고리즘 : 효율성(Efficiency) “효율적인 알고리즘은 전제를 통해 더 단순한 해결책을 제시하고, 오차와 비용 사이의 trade-off를 통해 기회를 제공한다.” - Brian Christian, Tom Griffiths - Time Complexity 8 4 6 2 5 1 2 3 4 5 6 7 8 200…… ……나이 : 4 Quick Sort / Merge Sort O(NlogN) O(logN) O(N) O(N) 메모리주소 : 연결리스트 : Bucket Sort O(N) O(1)
  • 6. /12 객체지향(Object Oriented Programming) : 유연성(Flexibility)  이상적인 소프트웨어 : (새로운 요구사항이 와도) 수정할 필요가 없는 소프트웨어  좋은 소프트웨어 : (새로운 요구사항이 와도) 기존의 코드를 수정할 필요가 없는 소프트웨어 요구사항 변경 시 기존 코드에 대한 수정을 최소화하여 유연성을 높여주는 언어적 특성 1. 추상화(Abstraction) 2. 캡슐화(Encapsulation = 대상화) 3. 상속(Inheritance) 4. 다형성(Polymorphism) 추가 삭제 유연성(Flexibility) 변경 5
  • 7. /12 디자인 패턴(Design Patterns) : 유연성(Flexibility) + 소통성(Communication) 소프트웨어의 설계적인 문제를 해결하는 검증된 구조에 명칭을 부여한 것 트라야누스 다리(101~103년 건축) 아치 패턴(퐁 뒤 가르 수도교, AD 1세기) 로마 가도(BC 5세기 ~ 로마시대) 교각에는 “아치 패턴”을 썼군. 그래서 튼튼하고 물이 흐를 공 간이 넓어. 상판에는 “가도 패턴”을 썼어. 그래서 가도와의 연결과 왕복 이동이 원활해. 관련도서 * 로마인 이야기(시오노 나나미) 6
  • 8. /12 UML(Unified Modeling Language, 그래디 부치) : 소통성(Communication)  조직의 업무를 파악하기 위해서 • 조직 구성팀 전체를 만나봐야 한다면? - 시간이 많이 걸린다. • 조직도가 있다면 업무 파악에 도움이 된다.  UML : 소프트웨어의 구조를 파악하기 위함 • 개발자 간의 의사소통, 소프트웨어에 대한 가시성, 복잡한 구조에 대한 명확한 설명이 가능. 객체 지향 소프트웨어의 설계를 시각적인 기호로 표현해주는 표준 언어 개발센터 기획팀 개발팀 특허팀 구매팀 사업부 동적 다이어그램정적(구조) 다이어그램 7
  • 9. /12 Unit Test(켄트 벡, 에릭 감마) : 유연성(Flexibility)  간접 검증 원리 • 소프트웨어의 로직을 직접 들여다 보지 않는다. • 검증용 소프트웨어로 제품 소프트웨어를 검증한다.  불완전한 소프트웨어로 소프트웨어를 검증한다? • 검증용 소프트웨어가 (검증 대상 보다) 단순하고 간결하다. • 테스트 되지 않은 소프트웨어보다 테스트 된 소프트웨어가 더 낫다.  검증 전략 • 객체 단위로 테스트한다.(작은 소프트웨어) • 자주, 빠르게 테스트 한다.(수정에 의한 오류 발생 방지) 복잡한 소프트웨어를 테스트 소프트웨어로 반복적으로 테스트한다. 소프트웨어 검증용 소프트웨어 (Unit Test) 복잡하다 스스로 검증이 불가능하다 간결하다 단순하다 다른 소프트웨어를 검증할 수 있다 소리를 통해 엔진을 진단한다 (엔진을 직접 들여다 보지 않는다.) 8
  • 10. /12 리팩토링(Refactoring) : 유연성(Flexibility) “디자인 패턴은 리팩토링의 지향점이고, 리팩토링은 다른 상태에서 그 지향점까지 도달하는 방법이다.” (새로운 요구사항을 반영하기 위해) 이미 만들어진 소프트웨어의 기능을 그대로 두고 설계를 개선하는 기법 *노트르담 대성당의 벽 날개(Flying Buttresses). 초기 설계에 의해서 만들어진 것이 아니라 시공 시 발생한 균열을 해결하기 위해 덧붙였다. 현재는 그 조형미 를 인정 받고 있다. - 리팩토링(마틴 파울러) 9
  • 11. /12 Process : Agile 방법론  목표 : 소프트웨어의 효율성 / 유연성 / 소통성 확보  결함의 개수 = 시간 X 복잡도 “문제의 복잡성이 25% 증가하면 솔루션의 복잡성은 100% 증가한다.” 객체지향 디자인패턴 리팩토링 Unit Test 설계요구사항 UML 요구사항1 요구사항2 요구사항3 설계 구현 설계 구현 테스트 리팩토링설계 구현 테스트 “Agile Skill Set” 유연성 + 소통성 효율성 관련도서 * 우리가 미처 알지 못한 SW 공학의 사실과 오해(로버트 L. 글래스) * 토비의 스프링 3.1(이일민) 코드 수정 안전망 구현 테스트 자료구조 알고리즘 테스트 10
  • 12. /12 People : 인사제도 “소프트웨어 직업에서 가장 중요한 요소는 프로그래머의 자질이다.” “최고의 프로그래머는 최하의 프로그래머보다 28배 뛰어나다.” 효율성/유연성/소통성을 위한 기술을 갖추고 다른 사람과 협력할 줄 아는 사람을 키워 가는 인사제도를 지향해야 함. 업무 교육 및 학습평가채용 효율 유연소통 동료평가, 다면평가 사내 스터디그룹, SW 강의 체계 Agile Process Agile Skill Set P1 P3 P4 코딩 면접 채용 프로세스 개선 피드백 관련도서 * 우리가 미처 알지 못한 SW 공학의 사실과 오해(로버트 L. 글래스) * 구글의 아침엔 미래가 열린다(라즐리 복) 11
  • 13. /12 소프트웨어를 잘 만드는 방법  Product : Software  Process : Agile 방법론  People : 인사제도 소프트웨어를 이해하고 인간을 존중하는 문화 속에서 좋은 소프트웨어가 만들어진다. 리팩토링요구사항n 설계 구현 테스트 Unit Test 효율성 유연성 소통성 Hardware Software Computer Human 대규모 소프트웨어 개발은 개발자 간 소통과 협력이 원활해야 가능하다. 인간은 크고 복잡한 것을 이해하는 능력이 떨어지고, 오래된 것은 잊어버린다. 효율성/유연성/소통성을 갖추고 다른 사람과 협력할 줄 아는 사람을 키워가야 한다. 업무 교육 및 학습평가채용 채용 프로세스 개선 피드백 반복 객체지향 디자인패턴 리팩토링 Unit Test UML자료구조 알고리즘 12 “Agile Skill Set”