Software Engineering

22
Copyright 2012 CalebABC Co., Ltd. All Rights Reserved. 1 Software Engineering 2012 년 01 년 27 년

description

SE : Software Engineering 소프트웨어공학

Transcript of Software Engineering

Page 1: Software Engineering

Copyright 2012 CalebABC Co., Ltd. All Rights Reserved.ⓒ1

Software Engineering

2012 년 01 월 27 일

Page 2: Software Engineering

Copyright 2012 CalebABC Co., Ltd. All Rights Reserved.ⓒ2

Ⅱ. Software Crisis

Ⅲ. Agile

Ⅰ. SE

Page 3: Software Engineering

Copyright 2012 CalebABC Co., Ltd. All Rights Reserved.ⓒ3

Software Engineering(SE)

소프트웨어 공학• Back to 1968 NATO Software Engineering Conference

• 소프트웨어 공학이란 소프트웨어의 품질과 생산성을 향상시키기 위하여 사용자의 요구사항을 체계적으로 분석하여 설계 및 구현 , 구현된 시스템의 시험 그리고 유지보수 및 폐기 시까지 소프트웨어 전 수명주기 간에 걸쳐 이루어지는 체계적인 접근법을 말한다 .

- Sommerville, in “Software Engineering” –

• The application of a systematic, disciplined, quantifiable approach to development, operation, and maintenance of software; that is, the application of engineering to software. 소프트웨어의 개발 , 운영 및 유지보수에 체계적이고 , 훈련이 잘 된 정량적인 접근 방법을 적용하는 것으로 , 소프트웨어 개발및 관리를 공학적으로 접근하는 것을 말한다 .

- Definition by IEEE Computer Society -

Page 4: Software Engineering

Copyright 2012 CalebABC Co., Ltd. All Rights Reserved.ⓒ4

한가한 교차로신호등이 도리어 운전자에게 불편함

통행량의 증가 신호등이 없으므로 불편하고 도리어 정체가 심하여짐

복잡한 도로신호등 없이 교통 흐름 제어가 불가능

Page 5: Software Engineering

Copyright 2012 CalebABC Co., Ltd. All Rights Reserved.ⓒ5

Goal of Software Engineering

Produce quality software on time within budget that satisfies user’s needs.

Produce quality system and service

Eventually, make business profit through software

Page 6: Software Engineering

Copyright 2012 CalebABC Co., Ltd. All Rights Reserved.ⓒ6

Page 7: Software Engineering

Copyright 2012 CalebABC Co., Ltd. All Rights Reserved.ⓒ7

Software Crisis

소프트웨어 위기• Late Delivery• Over Budget• Inconsistent with the specification• Difficult to understand• Too costly to modify or improve

Page 8: Software Engineering

Copyright 2012 CalebABC Co., Ltd. All Rights Reserved.ⓒ8

Page 9: Software Engineering

Copyright 2012 CalebABC Co., Ltd. All Rights Reserved.ⓒ9

Waterfall model

Page 10: Software Engineering

Copyright 2012 CalebABC Co., Ltd. All Rights Reserved.ⓒ10

Spiral model

Page 11: Software Engineering

Copyright 2012 CalebABC Co., Ltd. All Rights Reserved.ⓒ11

V-Model

Page 12: Software Engineering

Copyright 2012 CalebABC Co., Ltd. All Rights Reserved.ⓒ12

Agile

SW 개발의 중요 요소• 확실성 (Certainty)• 가시성 (Visibility)• 변경용이성 (Changeability)

Agile 의 특징•Communication(Stakeholde

r)•Feedback•Flexibility

Page 13: Software Engineering

Copyright 2012 CalebABC Co., Ltd. All Rights Reserved.ⓒ13

Manifesto for Agile Software Development

We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:

Individuals and interactions over processes and tools

Working software over comprehensive documentation

Customer collaboration over contract negotiation

Responding to change over following a plan

That is, while there is value in the items on the right, we value the items on the left more.

Page 14: Software Engineering

Copyright 2012 CalebABC Co., Ltd. All Rights Reserved.ⓒ14

애자일 선언문의 바탕이 되는 신념

우리는 다음과 같은 신념을 지키고 따른다 :

1. 우리에게 가장 중요한 것은 가치있는 소프트웨어를 좀 더 빨리 그리고 계속적으로 제공함으로써 고객들을 만족시키는 것이다 .

2. 개발의 마지막 단계에서 요구 사항이 변경된다 할지라도 기꺼이 받아들인다 . 애자일 프로세스는 고객들이 더 큰 경쟁력을 가질 수 있도록 언제든지 요구 사항의 변경을 지원한다 .

3. 동작하는 소프트웨어를 자주 고객들에게 제공한다 . 몇 주에 한번 , 또는 몇 달에 한번이 될 수도 있겠지만 , 그 기간을 최대한 줄이기 위해 노력한다 .

4. 비지니스 담당자와 개발자는 프로제트가 진행되는 동안 항상 협조하며 매일 매일 함께 일한다 .

5. 프로젝트 참여자들에게 동기를 부여한다 . 프로젝트가 성공할 것이라고 믿음을 가지고 , 그들이 원하는 환경을 만들어주고 최대한 지원한다 .

6. 개발팀의 내 , 외부적으로 모든 정보들을 공유하며 전달할수 있는 가장 유용하고 효과적인 방법은 서로 얼굴과 얼굴 맞대고 대화하는 것이다 .

7. 프로젝트의 진척 상태를 확인할때 가장 기본이 되는 것은 소프트웨어가 동작하는지 보는 것이다 .

8. 애자일 프로세스는 지속적인 개발이 가능할 수 있도록 도와준다 . 스폰서 , 개발자 , 사용자 모두 프로젝트가 끊임없이 계속 진행될 수 있도록 노력해야 한다 .

9. 새로운 우수한 기술들과 더 좋은 설계에 지속적으로 관심을 가진다 .

10. 꼭 필요한 일만 할 수 있도록 도와주는 단순성 (Simplicity) 은 항상 염두에 두어야 하는 꼭 필요한 것이다

11. 내부적으로 스스로 발전하는 팀들만이 최고의 아키텍처 , 요구사항 , 설계를 가질 수 있다 .

12. 주기적으로 어떻게 하면 더 효과적인 팀이 될 수 있는지 고민해야 한다 . 그리고 그 고민에서 나온 아이디어들을 행동에 옮겨라 .

Page 15: Software Engineering

Copyright 2012 CalebABC Co., Ltd. All Rights Reserved.ⓒ15

Page 16: Software Engineering

Copyright 2012 CalebABC Co., Ltd. All Rights Reserved.ⓒ16

Scrum

일본에서 처음 시작 되었으며 , 처음엔 공업품 개발에 사용됨 .

특징• 기능 / 개선점에 우선순위부여

– MoSCoW : 요구사항들의 우선순위 (Must, Should, Could, Would) (DSDM)

• 개발주기는 30 일정도 , 매번 실제 동작 가능한 결과 제공 .• 매일 15 분 정도 회의• 항상 팀단위로 생각• 의사소통을 위한 열린 공간 유지

지식창조 촉진의 5 요소• 조직의 의도 - 지식 창조의 목표나 팀을 지탱하는 축• 자율성 - 팀의 멤버에게 자유로운 행동을 인정하는 열린 환경 ( 시스템 )• 역동적이고 창조적인 카오스 - 조직 내 외부 간의 역동적인 상호작용을 통한 지식창조 환경• 잉여성 - 의도적으로 조직에 넘쳐나는 여분의 정보• 최소 유효 다양성 - 복잡하고 다양한 환경에 기민하게 대응하기 위해서는 조직 구성원이 가져야 하는 다양성

추구하는 가치• 확약 - 약속한 것을 확실히 실현되는 것• 전념 - 확약한 것의 실현에 전념하는 것• 숨기지 않음 - 비록 자신에게 있어서 불리한 일에서도 숨기지 않는 것• 존중 - 자신과 다른 사람에게 경의를 표하는 것• 용기 - 위의 사항을 언제든지 지킬 수 있는 용기

Page 17: Software Engineering

Copyright 2012 CalebABC Co., Ltd. All Rights Reserved.ⓒ17

XP(eXtreme Programming)

애자일 개발방법론 중의 대표적 .

비즈니스 상의 요구가 시시각각 변동이 심한 경우에 적합한 개발 방법

비교적 적은 규모의 인원 (10 명 내외 ) 의 개발 프로젝트에 적용

목적• 고객이 원하는 양질의 소프트웨어를 빠른 시간안에 전달하는 것

원칙• 개발 문서 보다는 소스코드 , 조직적인 개발의 움직임 보다는 개개인의 책임과 용기에 중점 ( 단순성 ,

상호소통 , 피드백 , 용기 ( 자신감 ))

고객과 팀원간의 대화를 통해 해결

제일 많은 사례• http://xper.org/wiki/xp/_b1_b9_b3_bb_bf_dc_be_d6_c0_da_c0_cf_bb_e7_b7_ca

Page 18: Software Engineering

Copyright 2012 CalebABC Co., Ltd. All Rights Reserved.ⓒ18

애자일 앞으로는 ?

그대로 받아들이는것보다 각자 문화와 산업분야에 맞도록 각자 조정 필요

Page 19: Software Engineering

Copyright 2012 CalebABC Co., Ltd. All Rights Reserved.ⓒ19

No silver bullet

Frederick P. Brooks, Jr(1931~)

“ 지연되는 프로젝트에 인력을 더 투입하면 오히려 더 늦어진다 .”브룩스의 법칙 (Brook’s Law) ‘ 맨먼스의 신화 (Man-Month Myth)’ 1975

“ 지난 10 년간을 보았을 때 , 은총알 (Silver bullet) 은 보이지 않는다 . 기술에서든 관리에서든 어떤 한 가지 발전이 그 자체만으로 10 년 내에 생산성 , 신뢰성 , 단순성을 한방에 향상시켜줄 것 같아 보이는 것은 없다 .”

‘No Silver bullet Essence and Accidents of Software Engineering’ 1987

Page 20: Software Engineering

Copyright 2012 CalebABC Co., Ltd. All Rights Reserved.ⓒ20

Ref

http://fantazic.com/archives/107

http://www.slideshare.net/ChanhoSong/no-silver-bullet-8311549

http://www.wikipedia.org/

http://ebizstory.com/330

http://www.slideshare.net/soonsam/intro-of-agile

http://agilemanifesto.org/

CMMI

ITSM

Page 21: Software Engineering

Copyright 2012 CalebABC Co., Ltd. All Rights Reserved.ⓒ21

Page 22: Software Engineering

Calebwww.calebabc.com