이 장에서는 소프트웨어 설계프로세스를 본격적으로 살펴보기 앞서 공학(engineering)이나 건축과 같은 도메인에서의 설계프로세스를 살펴봅니다.
보통 설계하면 기술설계를 생각합니다. '설계가 환경을 바꾸는 것'이라는 관점을 가져야만 설계에 있어 기술 외에도 다양한 차원의 것들을 고려할 수 있습니다.
외부환경의 변경되면 설계 또한 이에 대응하여 변경되어야 합니다. 이런 관점에서 보면 설계는 의사결정이라기 보다는 sense making이라고 할 수 있습니다.
이런 관점에서 보면, 설계자 또한 환경의 일부가 되기 때문에 설계는 한 개인의 머리에서 나올 수 있는 것이 아닙니다.
설계는 단순히 정형화된 일련의 절차로 가능한 것이 아닙니다. 설계는 중요한 tension들에 대해 대응하는 것입니다.
As I have described it, design is characterized by its responses to its underlying tensions: form and context, the artistic and the analytic, the architect and his client, the activity and its management, the objectworld and the process-world.
설계는 모든 것을 다 아는 상태에서 시작하지 않습니다. 잘 모르는 상태에서 시작합니다. 잘 모르는 상태이니 실패하게 됩니다. 실패는 실패로 끝나지 않고 학습을 유도합니다. 실패를 통해 배웁니다. 학습을 통해 더 많은 것을 알게 되고 그에 따라 성공의 확률은 높아집니다. 성공은 해결책으로 반영됩니다.
RMSer's Page
RSM에서는 이러한 과정에 좀 더 인간적인 특징을 반영하여 대리라는 개념을 사용합니다.
1. 일정
2012년 6월 23일 ~ 7월 14일, 매주 토요일 4일
(6월 23일, 6월 30일, 7월 7일, 7월 14일)
교육시간은 오전 10시에서 오후 7시까지입니다.
2. 수강료
800,000(부가세 별도)
3. 수강대상
NWC컨설팅의 '소프트웨어 모델링 핵심 개념 및 기법' 교육 이수자
4. 수강신청
kimhn@umlcert.com 로 '이름', '교육받으신 시점', '간단한 자기소개'를 작성하셔서 '수강신청요청' 메일을 보내시면 됩니다. 수강신청은 이메일로만 받습니다.
5. 교육장소
태평양 교육센터(http://www.tpyedu.net/), 태평양 교육센터는 교육장을 대여해 주는 업체입니다.
교육에 대한 문의는 아래 수강신청에 나와 있는 이메일 주소를 이용해 주십시오.
교육장소는 사정에 따라 변경될 수 있습니다. 교육 개설 일주일 전까지 확정된 교육 장소를 안내해 드립니다.
6. 교재
교재는 강의용 자료와 도서 자료로 구분합니다.
도서 자료는 UML2.4.1 명세서와 생각하며배우는 UML2.0의 모델요소만을 편집한 자체교재를 사용합니다.
또한 학습할 분량이 많기 때문에 UML2.0 동영상 강좌를 통해 주중 학습을 돕습니다.
7. 교육내용
1. UML 2 스펙의 내용을 학습합니다.
2. UML 스펙을 모델링합니다.
단순하게 UML 스펙의 내용을 학습하는 것이 아니라 어떻게 UML 스펙이 작성되었는지를 모델링을 통해 알아보고 스스로 스펙을 작성할 수 있도록 함으로 메타모델링 능력을 향상시킵니다.
3. 예상 문제 풀이를 합니다.
OCUP은 UML 전문가로 인증해주는 국제자격입니다.
OCUP는 세 개의 레벨을 가지고 있으며 각각 독립된 자격을 부여합니다.
Fundamental은 모델링시 가장 자주 사용되는 모델요소들에 대한 지식을 묻는 시험입니다.
Intermediate는 중간정도 사용빈도를 갖는 모델요소로 가장 범위가 넓고 난이도가 있는 시험입니다.
Advanced는 고급사용자들만 사용하는 매우 적게 사용되는 모델요소들과 UML2.0 스펙의 아키텍처와 OCL (Object Constraint Language)의 지식을 묻는 시험입니다.
NWC 컨설팅의 OCUP 교육은 OCUP의 세 개 레벨을 모두 다룹니다. 궁극적으로 Advanced를 획득하기 위한 과정입니다.
NWC 컨설팅은 모델링 도구 개발을 위해 다년간 UML Spec을 분석했으며 2004년 부터 OCUP 교육을 수차례에 걸쳐 시행했습니다. 교육 참석자 90% 이상이 자격증을 획득할 만큼 높은 합격률을 자랑합니다.
OCUP에 대한 좀 더 자세한 사항은 아래 링크를 참조합니다.
http://www.omg.org/uml-certification/
사람들은 자신에게 주어진 상황속에서 문제를 이해하고 해결책을 설계해서 자신이 살아가고 있는 세상을 바꾸어 나갑니다. 이와 같은 이유로 설계과정의 상황성에 대해서 알아볼 필요가 있습니다.
저자는 이를 위해 이 장에서 액티비티 이론(activity theory), 성찰 실천(relective practice), 편향(bias)과 오류(error)와 이성의 역할(the role of the rational)을 살펴봅니다.
then conclude with an examination of bias, error, and the role of the rational.
읽기 쉽지 않은 텍스트 입니다. 액티비티 이론은 다음 두 개의 글을 먼저 읽고 시작하는 것이 좋을 것 같습니다. http://blog.naver.com/gaia92?Redirect=Log&logNo=120049911460, http://bit.ly/IB1Gox
저자는 액티비티 이론을 통해서 무엇을 말하고 싶은걸까?
왜 성찰(reflection)에 대해서 이야기하는가?
기술적 합리성 문제해결 모델에서는 우리가 지식체계를 가지고 특별한 문제에 대해 지식을 합리적으로 적용함으로 문제를 해결할 수 있다고 말합니다. 하지만 실제로 지식은 상황에 대한 대응으로 만들어집니다. 문제를 해결해야 하는 당사자의 이해를 벗어나는 상황이 발생했을 때 성찰을 통해서 상황과의 상호작용을 통해서 문제를 해결해 나갑니다.
왜 이성과 편향과 오류를 이야기 하는가?
인간은 상황에서 편향과 오류를 일으키는 존재입니다.
RSMer's Page
RSM의 전체와 부분, 컬레보레이션과 부분, 전체와 컬레보레이션이 부분의 컨텍스트가 된다는 것, 부분의 역할이 어떻게 주어지는지를 생각하면서 좀 더 깊이 있게 읽으면 좋겠습니다.
액티비티를 다음과 같이 세 수준으로 나누는 것은 인상적입니다.
Activity-Motive, Action-Goal, Operation-Condition(주어진 조건)
설계는 환경을 바꾸는 것입니다. 설계는 사람이 하는 활동으로 인간 환경을 바꾸는 것입니다.
왜 바꿀까요? 뭔가 문제가 있으니까 바꾸려고 하겠죠. 이런 관점에서 보며 설계는 문제에 대한 해결책을 구하는 것이라고 할 수 있습니다.
컴퓨터는 인간이 지식으로 표현할 수 있는 것에 기반하여 구축될 수 있습니다. 정형화된 지식이어야 합니다. 결국 우리는 소프트웨어를 개발하기 위해서 인간 지식의 성질을 알아야만 합니다.
이 장은 다양한 관점들(인지과학, 생태학, 전문성, 복잡성)을 가지고 인간의 문제해결에 대해서 살펴봅니다. 또 내용이 어려워 집니다. 저자는 여기서 다루는 것들에 대한 해결책으로 adaptive design을 제시합니다. 여기서 복잡하게 각각을 자세히 다루기 보다는 3부에서 필요한 부분만 취해서 이해하는 것이 더 쉬워보입니다.
RSMer's Page
2012년 5월 12일 ~ 6월 16일, 매주 토요일 6일 과정
(5월 12일, 19일, 26일, 6월 2일, 9일, 16일)
교육시간은 오전 10시에서 오후 7시까지입니다.
2. 수강료
800,000(부가세 별도)
3. 수강신청
- 아래 수강신청 링크를 클릭하시고, 수강신청서를 작성합니다.
수강신청
- 작성한 수강신청서를 kimhn@umlcert.com로 메일을 보내주시면 됩니다.
교육 문의 및 신청은 메일로만 가능합니다.
4. 교육후기
교육후기가 교육이 추가하는 바를 더 잘 설명해 줍니다.
교육후기
5. 교육장소
태평양 교육센터(http://www.tpyedu.net/), 태평양 교육센터는 교육장을 대여해 주는 업체입니다.
교육에 대한 문의는 아래 수강신청에 나와 있는 이메일 주소를 이용해 주십시오.
교육장소는 사정에 따라 변경될 수 있습니다. 교육 개설 일주일 전까지 확정된 교육 장소를 안내해 드립니다.
6. 특별혜택
NWC 컨설팅의 UML2.0 교육 동영상을 드립니다.
지속적으로 교육내용을 적용할 수 있도록 알스머 세미나에 참여할 수 있습니다.
UML 다이어그램을 작성할 수 있는 RSM Smarteasy Simple Diagram™ 정식 버전을 드립니다.
교육신청은 최대 12명으로 제한합니다.
이는 교육 효율성을 높이기 위해서 입니다.
선발기준은 없습니다. 수강신청 순서에 따릅니다.
실습과정에서는 이미 교육을 수료하셨고, 리얼소프트웨어모델링 강사를 할 수 있는 수준의 스탭들이 프로젝트를 돕습니다.
현재 조직에서 어떤 역할을 담당하시고 계십니까?
개발자 입니까? 도메인 전문가입니까? 비즈니스모델러입니까? 분석/설계자 입니까? 아키텍트 입니까?
여러분이 어떤 역할을 담당하든 모델링 역량이 필요합니다.
모델링이 소프트웨어 개발에 도움이 되지 않는다고 생각합니까?
모델링을 하고는 있는데 확신이 서지 않습니까?
모델링 지식이 경험적 지식이기 때문에 분명히 배울 수 없다고 생각하십니까?
도메인이나 비즈니스의 업무가 빠른 시간내에 파악되지 않고 소프트웨어 개발과 괴리가 있습니까?
모델링이 특정 방법론에서나 하거나 한때의 유행이라고 생각하십니까?
NWC 컨설팅의 소프트웨어모델링 교육을 선택하십시오.
진짜 모델링 방법을 배우십시오.
여러분의 소프트웨어 개발 능력과 도메인 이해 능력을 놀랍게 높여줄 것입니다.
올바른 방법을 배우십시오. 그리고 경험을 쌓으십시오. 올바른 방법을 알지 못한 경험은 쓰레기 만을 만들 뿐입니다.
NWC 컨설팅의 소프트웨어모델링 교육입니다.
NWC 컨설팅의 소프트웨어모델링에 대한 경험과 지식을 공유합니다.
한 단계 높은 경쟁력을 얻고 싶으신 분들의 많은 관심바랍니다.
주변에 많은 분들에게 알려주시고, 특히 여러분이 아끼는 분들에게 권해주십시오.
소프트웨어모델은 분석과 설계 과정에서 만들어집니다.
일반적인 소프트웨어 분석/설계 교육은 특정 방법론 또는 개발프로세스에 맞추어진 절차 중심의 이론적인 교육이 주를 이룹니다.
특정 방법론이나 개발프로세스에 맞추어 분석/설계를 할 경우 산출되는 문서들과 문서들 사이의 관계에 초점을 맞추게 됩니다. 정작 중요한 소프트웨어모델의 품질을 높일 수 있는 방법은 가르쳐주지 못합니다.
고품질의 소프트웨어모델을 만들기 위해서는 전체와 부분의 관점에서 소프트웨어모델링의 기본개념들을 분명하고 정확하게 이해해야 합니다. 또한 고객의 요구사항을 형식화하고 이를 소프트웨어의 기능과 구조로 반영할 수 있는 소프트웨어모델링 기술과 표현방법을 알아야 합니다. 모델은 논리적 결함 또는 의미적 차이 없이 구현될 수 있어야 합니다.
'소프트웨어모델링 핵심 개념 및 기법'은 교육 참여자들로 하여금 고품질 소프트웨어모델을 작성할 수 있도록 하는 교육입니다. 교육 과정을 통해서 교육 참여자들은 소프트웨어 핵심개념을 분명하고 정확하게 이해하고, 고객의 요구사항을 형식화하여 소프트웨어 기능과 구조로 반영하며, 이를 논리적 결함이나 의미적 차이 없이 구현하는 방법을 학습합니다.
고품질 소프트웨어모델을 만들 수 있는 방법인 '소프트웨어모델링 핵심 개념 및 기법' 교육에 NWC컨설팅과 김현남 대표의 이름을 걸었습니다. 어디서나, 누구에게나 배울 수 있는 것이라면 시작하지도 않았을 것입니다.
세부사항에 대해서는 아래 링크를 참조합니다.
일정
개요
특징
목표
강사
컴퓨팅 기술에 대한 이해는 컴퓨터 이전에 있던 기술에 대한 경험을 기반으로 합니다. 이러한 이유로 소프트웨어는 컴퓨터 이전의 다른 제품들과 비교했을 때 타고난 유연성을 가졌음에도 불구하고 다른 제품을 만드는 방법과 유사하게 개발되어왔습니다.
소프트웨어 개발 방법은 기존의 방법들과는 다른 소프트웨어의 타고난 유연성을 적극적으로 활용하는 개발 방법이 요구됩니다. 저자는 이러한 개발 방법으로 adaptive design을 언급합니다.
소프트웨어는 환경을 바꾸기 위해 개발됩니다. 따라서 소프트웨어 설계에 있어 환경에 대한 고려가 있어야 합니다. 전통적인 설계방식은 technological design라고 합니다. 환경을 고려한 설계를 ecological design이라고 합니다.
인류는 근본을 찾기 위한 꿈을 가지고 있습니다. 그러나 그것은 단지 꿈일 뿐입니다. 우리가 아는 지식은 인식에 의한 것으로 인식의 컨텍스트를 갖습니다. 우리가 해야 할 최선은 아는 것을 더 정제하고 향상시키는 것입니다. 그것이 허용될 때 까지...
이후의 장들에서는 어떤 내용을 다룰까?
RSMer's Page
저자가 이 내용을 설명하기 위해 인용하는 Herbert Dreyfus 교수의 홈페이지가 있습니다. http://socrates.berkeley.edu/~hdreyfus/
이 내용과 관련해서 좀 더 깊이 있는 생각을 해 볼 필요가 있습니다. RSM의 다음 내용을 다시 한 번 깊이 있게 읽어보시기 바랍니다. http://umlcert.tistory.com/608
3장까지가 1부를 구성합니다. 1부의 목적은 새로운 설계의 시대에 필요한 통찰을 얻기 위해 과학과 기술에 대해 살펴보는 것입니다. 2장에서는 과학에 대해서 살펴보았고, 이번 장에서는 기술에 대해서 살펴볼 것입니다.
전통적인 관점에서는 과학이 지식을 발견하고, 기술이 그 지식을 적용하는 것으로 과학과 기술의 관계를 설명합니다.
오늘날에는 과학과 기술의 이러한 관계는 의심을 받기 시작합니다. 과학은 발견만 하는 것이 아니라 설계도 하고, 기술은 설계만 하는 것이 아니라 발견도 합니다.
Both physics and engineering science are discovery processes; the former is concerned with the natural phenomena of interest to the scientific community, and the latter concentrates on manmade and natural phenomena as they affect the artifacts to be designed. There is no division between the two categories of knowledge, and both disciplines engage in design. For science, it is design for discovery, and for technology it is discovery for design. Mirror-image twins.
저자는 과학의 목적은 실체에 대한 모델을 만드는 것이라고 합니다. 과학과 기술을 다른 것으로 보지 않기 때문에 이 둘의 목적은 모델을 만드는 것이라 할 수 있다고 합니다.
전통적인 관점에서의 과학은 수학과 논리에 의존해서 행할 수 있는 매우 좁은 범위의 실체에 대해 모델링해왔습니다. 소프트웨어 개발은 수학과 논리로 표현할 수 없는 모호한 부분 또한 모델링해야 하기 때문에 과학모델보다 더 나은 것을 찾아야 합니다.
RSMer's Page
멋지긴 한데 읽어내기는 쉽지 않습니다.
읽어내는데 너무 시간이 걸리면 정리된 내용만 확인하시고 넘어가셔도 됩니다.저자는 두 가지 관점에서 과학을 다룹니다. 하나는 철학으로서의 과학이고 다른 하나는 인간제도로서의 과학입니다. 이장은 첫 번째 관점을 다루는 부분입니다. 두 번째 관점은 2부에서 다룹니다.
저자는 왜 과학에 집착하는 걸까?
The process begins with an idea, a concept, something that may defy a complete description, and it ends with the delivery of a formal model that executes in the computer. As we have seen, there is a fundamental tension in this transformation, a tension between what we want and how we make it work, between the requirements in the world and their realization in the computer, between the subjective and the objective, the conceptual and the formal. This book seeks to resolve that tension.
Science faces a similar problem, and so I start by examining its solutions. Science begins with something very complex and poorly represented—the real world—and its goal is to describe aspects of that reality with theories and models. We know that science is successful. It is reasonable to look, therefore, into its strengths and limitations for insight into resolving the software process' central tension.
왜 과학철학인가?
본문의 내용은 안 읽고 가는 것이 정신 건강에 좋을 것 같습니다. 이번 기회에 과학철학에 대해 관심을 가졌고, 그와 관련된 책 한 권 정도 읽은 것으로 만족하고 넘어가겠습니다.
과학철학을 살펴본 저자의 결과는 무엇인가?
RSMer's Page
소프트웨어 개발은 생성과 사용에 대한 것입니다. 문제영역인 도메인은 사용의 관점을 강조하고, 해결책 영역인 소프트웨어는 생성의 관점을 강조합니다. 저자가 말하는 tension은 생성과 사용이 무엇인지를 알고 그들이 어떻게 관련되는지를 알면 해소됩니다.
초창기에 비해 저자의 시대에도 computing은 매우 다르게 변해 있었고, 그 다음 50년에는 더 큰 변화가 있을 것입니다. computing은 세상을 바꾸고 있습니다. 저자는 특히 설계에 있어서의 변화에 주목합니다.
object; rather, it is the design of an object.
저자는 다음 50년을 준비합니다. 지금의 소프트웨어 개발 방법으로는 안된다고 생각합니다. computing이 급변하는 만큼 소프트웨어 개발 방법도 급변해야 된다고 생각합니다. 패러다임의 변화에 해당하는 변화가 있어야 된다고 합니다.
패러다임의 변화를 위해서는 기초부터 다시 세워야 합니다. 저자는 과학과 기술로 출발해서 컴퓨터 과학과 소프트웨어 공학을 살펴보려고 합니다.
science.
Once we agree on the essence of science, we then can determine its relationship to technology. From this we may derive a working appreciation of software engineering and its relation to computer science. Recall that my goal is to alter the process of design, which will restructure software engineering and perhaps even invalidate portions of computer science. The questions are, Is this possible, and, if yes, will we need a new computer science?
과학이 무엇인지를 살피다보니 과학철학으로 들어가게 됩니다. 1.3절 'An Engineering Discipline of Software' 부터는 과학철학에 대한 이해를 갖고 있다면 좀 더 쉽게 읽어낼 수 있습니다. 과학철학은 제가 잘 모르는 부분이기에 이 책을 이해하는데 어려움을 겪었습니다. 그래서 제임스 레디먼의 과학철학의 이해라는 책을 읽었습니다.
과학철학에 대한 내용은 본격적으로 2장과 3장에 등장합니다. 2장과 3장으로 들어가기 전에 과학철학에 대한 책을 하나 정도는 읽고 들어가는 것이 좋을 것입니다.
저자는 새로운 설계의 시대에 어떻게 설계를 하고자 하는 것일까요? 다음 대목은 그것을 알 수 있게 해주는 부분입니다.
I believe that software has unique features that, once exploited, will permit us to employ a better model, which I call adaptive design. Rather than relying on the two-step process of first create a specification in-the-world and then realize that specification in-the-computer, I see a one-step process that permits us to model what goes on in-the-computer as it affects us in-the-world. In this way we go beyond programming (in-the-computer) and concern ourselves only with how the programs behave in-the-world.
RSMer's Page
그에 비해, RSM은 도메인은 대부분 formal하고, 약간의 informal한 부분이 있다고 말합니다. 대부분 informal하게 보이는 것은 표현 방식이 달라 formal한 것이 informal하게 보이기 때문입니다.
RSM은 저자가 말하는 tension을 무효화시키기 때문에 tension을 줄이려는 노력이 필요없게 됩니다.
프롤로그는 저자가 왜 이렇게 책을 구성했는지를 알 수 있게 합니다.
저자는 자신을 소프트웨어 공학자라고 소개하고 있습니다.
소프트웨어 공학자는 소프트웨어를 develop하고 maintain합니다.
저자는 소프트웨어 공학자로서 어떻게 소프트웨어를 develop하고 maintain해야 하는지에 대한 답을 찾기 위해 노력했고, 그 결과가 이 책입니다.
소프트웨어에 대한 다음과 같은 저자의 인식은 그가 왜 설계에 초점을 맞추는지를 알게 합니다.
저자는 근본 원리를 찾고 싶어 했던 것 같습니다.
무엇인가를 절실히 찾는다는 것은 현재 상황에 불만이 있다는 것입니다. 저자는 당시의 소프트웨어 개발 방식을 확 바꿔 버려야 된다고 생각했을 것입니다. ‘주먹구구식으로는 안 돼!’라고 말하고 싶었을 것입니다.
근본원리를 찾으려는 노력의 부산물이 이 책의 1부와 2부가 아닌가 생각해 봅니다.
당시의 소프트웨어 공학은 저자가 원하는 것에 초점을 맞추고 있지 못했을 것입니다. 이런 상황에서 저자는 먼저 소프트웨어 공학이 무엇인지를 분명히 정의하고 넘어가야 할 것입니다.
The application of tools, methods, and disciplines to produce and maintain an automated solution to a real-world problem.
소프트웨어 공학을 이야기하다보니 컴퓨터 과학이 등장했을 것입니다. 이로부터 공학과 과학을 다루기 시작했을 것이고, 이에 대한 저자의 지적탐험의 결과가 1부일 것입니다. 1부 내용이 어려운 이유가 다 있습니다.
self-realizing design으로 소프트웨어를 바라보는 저자가 어떻게 소프트웨어를 설계할 것인가에 집중하는 것은 너무도 당연한 일입니다.
저자는 설계의 인간적인 면을 먼저 다룬 후에 소프트웨어 설계를 본격적으로 다룹니다.
The focus is on the human aspects of responding to needs and designing satisfactory responses.
Part III, "Software Design."
RSMer's Page
소프트웨어 개발은 설계를 개발하는 것이고, 소프트웨어를 유지보수하는 것은 설계를 유지보수하는 것입니다.

