티스토리 툴바

BLOG main image
분류 전체보기 (350)
NWC Consulting (7)
서비스 (134)
출판 (184)
일반 (24)
60,241 Visitors up to today!
Today 7 hit, Yesterday 37 hit
daisy rss
'서비스/세미나'에 해당되는 글 66건
2012/05/16 14:21

이 장에서는 소프트웨어 설계프로세스를 본격적으로 살펴보기 앞서 공학(engineering)이나 건축과 같은 도메인에서의 설계프로세스를 살펴봅니다.

 

보통 설계하면 기술설계를 생각합니다. '설계가 환경을 바꾸는 것'이라는 관점을 가져야만 설계에 있어 기술 외에도 다양한 차원의 것들을 고려할 수 있습니다.

외부환경의 변경되면 설계 또한 이에 대응하여 변경되어야 합니다. 이런 관점에서 보면 설계는 의사결정이라기 보다는 sense making이라고 할 수 있습니다.  

The notion of sense making implies a collective context in which we must make sense of a situation, inherently social, interpret it, and make sense with others through conversation and action in order to reach agreement,

이런 관점에서 보면, 설계자 또한 환경의 일부가 되기 때문에 설계는 한 개인의 머리에서 나올 수 있는 것이 아닙니다. 

Design is not what is in an individual's head; rather it is something created by the social action of collaboration.

 

설계는 단순히 정형화된 일련의 절차로 가능한 것이 아닙니다. 설계는 중요한 tension들에 대해 대응하는 것입니다.

Design is not, as some textbooks would have us believe, a formal, sequential process that can be summarized in a block diagram"

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.

 

설계는 모든 것을 다 아는 상태에서 시작하지 않습니다. 잘 모르는 상태에서 시작합니다. 잘 모르는 상태이니 실패하게 됩니다. 실패는 실패로 끝나지 않고 학습을 유도합니다. 실패를 통해 배웁니다. 학습을 통해 더 많은 것을 알게 되고 그에 따라 성공의 확률은 높아집니다. 성공은 해결책으로 반영됩니다.

Most design, he asserts, is on ill-defined problems (i.e., not copying). The search for a solution is a process of trial and error. Goal clarification proceeds in parallel with the search for solutions. During the process, there are failures, lessons, and occasional successes. The failures restrict the design space (i.e., resolve misfits), the learning expands the designer's ability, and the successes are worked into the solution. It is expected that the problem may change as the result of the design activity. "Part of the designer's skill is in understanding what the design is really supposed to accomplish. A mistake novices often make is to fixate on the original statement of design criteria"

 

 

RMSer's Page

RSM의 행위형식화 또한 위에서 설명하는 설계와 같이 잘 모르는 상태에서 시작합니다. 실패를 통해 학습하고 이를 통해 성공을 이끌어내고 해결책을 구축해갑니다. TDD 또한 그렇습니다.   

RSM에서는 이러한 과정에 좀 더 인간적인 특징을 반영하여 대리라는 개념을 사용합니다.  

 

저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback Address :: http://umlcert.tistory.com/trackback/632 관련글 쓰기
Name
Password
Homepage
Secret
2012/05/07 19:31

사람들은 자신에게 주어진 상황속에서 문제를 이해하고 해결책을 설계해서 자신이 살아가고 있는 세상을 바꾸어 나갑니다. 이와 같은 이유로 설계과정의 상황성에 대해서 알아볼 필요가 있습니다.

저자는 이를 위해 이 장에서 액티비티 이론(activity theory), 성찰 실천(relective practice), 편향(bias)과 오류(error)와 이성의 역할(the role of the rational) 살펴봅니다.

In this chapter I explore the situatedness of the design process. I begin with an overview of activity theory (which is referenced by some of the new design methods), move on to the idea of reflective practice, and
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

 

저자는 액티비티 이론을 통해서 무엇을 말하고 싶은걸까?

In what I have called technological design, we begin with a set of requirements (i.e., goals) and operate at the level of the action in the creation of operational tools. Activity theory suggests that if we are to move to some higher level of design (e.g., the adaptive design of Part III), then we must perform the analysis at the level of the activity and retain the flexibility to experiment with the actions necessary to realize the activity.

 

왜 성찰(reflection)에 대해서 이야기하는가?

기술적 합리성 문제해결 모델에서는 우리가 지식체계를 가지고 특별한 문제에 대해 지식을 합리적으로 적용함으로 문제를 해결할 수 있다고 말합니다. 하지만 실제로 지식은 상황에 대한 대응으로 만들어집니다. 문제를 해결해야 하는 당사자의 이해를 벗어나는 상황이 발생했을 때 성찰을 통해서 상황과의 상호작용을 통해서 문제를 해결해 나갑니다.   

 

왜 이성과 편향과 오류를 이야기 하는가?

인간은 상황에서 편향과 오류를 일으키는 존재입니다.

Perhaps what we see as bias and error is the clash between what humans have gained through coping in-the-world (i.e., everyday experience) and the scientifically founded normative rules for interpreting that experience.

 

RSMer's Page

액티비티 이론에 대한 부분은

RSM의 전체와 부분, 컬레보레이션과 부분, 전체와 컬레보레이션이 부분의 컨텍스트가 된다는 것, 부분의 역할이 어떻게 주어지는지를 생각하면서 좀 더 깊이 있게 읽으면 좋겠습니다.

 

액티비티를 다음과 같이 세 수준으로 나누는 것은 인상적입니다.

Activity-Motive, Action-Goal, Operation-Condition(주어진 조건)  

 

저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback Address :: http://umlcert.tistory.com/trackback/625 관련글 쓰기
Name
Password
Homepage
Secret
2012/04/30 15:42

설계는 환경을 바꾸는 것입니다. 설계는 사람이 하는 활동으로 인간 환경을 바꾸는 것입니다.

왜 바꿀까요? 뭔가 문제가 있으니까 바꾸려고 하겠죠. 이런 관점에서 보며 설계는 문제에 대한 해결책을 구하는 것이라고 할 수 있습니다.

Design is a human activity that seeks to alter the human environment.

 

컴퓨터는 인간이 지식으로 표현할 수 있는 것에 기반하여 구축될 수 있습니다. 정형화된 지식이어야 합니다. 결국 우리는 소프트웨어를 개발하기 위해서 인간 지식의 성질을 알아야만 합니다.

Part II investigates the nature of human knowledge: what is known, knowable, and formally representable. Scientific knowledge is a subset of human knowledge, expertise is the richest form of human knowledge, and only formally represented knowledge can be modeled in-thecomputer.

 

이 장은 다양한 관점들(인지과학, 생태학, 전문성, 복잡성)을 가지고 인간의 문제해결에 대해서 살펴봅니다. 또 내용이 어려워 집니다. 저자는 여기서 다루는 것들에 대한 해결책으로 adaptive design을 제시합니다. 여기서 복잡하게 각각을 자세히 다루기 보다는 3부에서 필요한 부분만 취해서 이해하는 것이 더 쉬워보입니다.

 

RSMer's Page

RSM에서는 data를 fact로, information을 구조화된 fact로, knowledge를 행위수행규칙으로 설명합니다. 아래의 설명과 이를 비교하면서 좀 더 깊이 생각해보세요. 가치가 추가되었다는 것은 어떤 의미일까요?

Data are the items given to the analyst, information is the data organized in a some useful fashion (i.e., data with value added), and knowledge is the cumulative experience in the manipulation, exchange, and creation of information.

저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback Address :: http://umlcert.tistory.com/trackback/624 관련글 쓰기
Name
Password
Homepage
Secret
2012/04/25 11:57

컴퓨팅 기술에 대한 이해는 컴퓨터 이전에 있던 기술에 대한 경험을 기반으로 합니다. 이러한 이유로 소프트웨어는 컴퓨터 이전의 다른 제품들과 비교했을 때 타고난 유연성을 가졌음에도 불구하고 다른 제품을 만드는 방법과 유사하게 개발되어왔습니다.

It is about the mismatch between software's inherent flexibility and the methods now used in software's construction.

 

소프트웨어 개발 방법은 기존의 방법들과는 다른 소프트웨어의 타고난 유연성을 적극적으로 활용하는 개발 방법이 요구됩니다. 저자는 이러한 개발 방법으로 adaptive design을 언급합니다.

Part III identifies one such normative model, called adaptive design, and demonstrates its efficacy.

 

소프트웨어는 환경을 바꾸기 위해 개발됩니다. 따라서 소프트웨어 설계에 있어 환경에 대한 고려가 있어야 합니다. 전통적인 설계방식은 technological design라고 합니다. 환경을 고려한 설계를 ecological design이라고 합니다.

Whereas technological design begins with a concern for the technological issues affecting the design and its realization, ecological design begins with the human environment in which design is initiated, conducted, and evaluated. (In Part III I contrast these perspectives as product oriented and problem oriented.) A shift to ecological design implies a reassessment of the methods and techniques deemed essential to technological design. Therefore, the remainder of Part II focuses on the issues affecting design in the human environment.

 

인류는 근본을 찾기 위한 꿈을 가지고 있습니다. 그러나 그것은 단지 꿈일 뿐입니다. 우리가 아는 지식은 인식에 의한 것으로 인식의 컨텍스트를 갖습니다. 우리가 해야 할 최선은 아는 것을 더 정제하고 향상시키는 것입니다. 그것이 허용될 때 까지...

Toulmin observes that the "dream of foundationalism—i.e., the search for a permanent and unique set of authoritative principles for human knowledge—proves to be just a dream" (p. 174). All we are required to do is use our experience critically and discriminatingly, refining and improving our inherited ideas, and determining more exactly the limits to their scope" (p. 179). "The key problem is no longer to ensure that our social and national systems are stable; rather, it is to ensure that intellectual and social proedures are more adaptive" (p. 185).

 

이후의 장들에서는 어떤 내용을 다룰까?

What we are concerned with here is the much larger issue of the practice of design (technological, aesthetic, and artificial). This practice occurs in the environment to be altered, and it involves the interactions of people and their environment. At least four roles can be identified: There is the sponsor who seeks to modify the environment, the designer who produces a representation of the modification, the implementor who realizes the representation, and the user who interacts with or is affected by the implementation. A single individual may play all four roles, or there may be multiple individuals playing each role. It follows, therefore, that we cannot consider the practice of design without first starting with an understanding of people, how they respond to breakdowns (e.g., the discovery of a need), and how they solve problems. These are the topics of Chapters 5 and 6. With this background established, Chapters 7 and 8 turn to the practice of design in its most general form.

 

 

RSMer's Page

이 장의 4.3에는 하이데거가 등장해서 책 읽기를 어렵게 합니다. 이 기회에 하이데거 책 한권 정도 읽기를 권합니다. 읽을 때 저자가 얻은 설계의 통찰을 생각하면서 읽으면 더 좋을 거 같습니다.

저자가 이 내용을 설명하기 위해 인용하는 Herbert Dreyfus 교수의 홈페이지가 있습니다. http://socrates.berkeley.edu/~hdreyfus/

이 내용과 관련해서 좀 더 깊이 있는 생각을 해 볼 필요가 있습니다. RSM의 다음 내용을 다시 한 번 깊이 있게 읽어보시기 바랍니다. http://umlcert.tistory.com/608

저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback Address :: http://umlcert.tistory.com/trackback/622 관련글 쓰기
Name
Password
Homepage
Secret
2012/04/18 19:18

3장까지가 1부를 구성합니다. 1부의 목적은 새로운 설계의 시대에 필요한 통찰을 얻기 위해 과학과 기술에 대해 살펴보는 것입니다. 2장에서는 과학에 대해서 살펴보았고, 이번 장에서는 기술에 대해서 살펴볼 것입니다.  

The goal of Part I is to lay out the scientific and technological foundations for this new era of design. In the chapter just concluded, we have seen how the Legend of science has become tarnished.

전통적인 관점에서는 과학이 지식을 발견하고, 기술이 그 지식을 적용하는 것으로 과학과 기술의 관계를 설명합니다.

Science discovers knowledge and engineering applies that knowledge.

오늘날에는 과학과 기술의 이러한 관계는 의심을 받기 시작합니다. 과학은 발견만 하는 것이 아니라 설계도 하고, 기술은 설계만 하는 것이 아니라 발견도 합니다.   

Science relies on design to support its discovery, and technology engages in discovery to improve its designs. Thus, it should not surprise us to find that there is no clear demarcation between the scientific and the technological.

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. 

 

저자는 과학의 목적은 실체에 대한 모델을 만드는 것이라고 합니다. 과학과 기술을 다른 것으로 보지 않기 때문에 이 둘의 목적은 모델을 만드는 것이라 할  수 있다고 합니다. 

I began by stating that the goal of science is to model reality (i.e., to gain knowledge about the phenomenal world), and I have just asserted that there is no clear division between science and technology, between discovery and design. It follows, therefore, that the goal of science/technology extends to modeling what exists independent of humanity (which includes humanity as a component of the environment) and also to modeling aspects of humanity, such as its artifacts, the process of constructing its artifacts, and so on. By the logic of my argument, we now must model virtually everything. I am not sure that I can accept this challenge, but it will be useful to explore its consequences.

 

전통적인 관점에서의 과학은 수학과 논리에 의존해서 행할 수 있는 매우 좁은 범위의 실체에 대해 모델링해왔습니다. 소프트웨어 개발은 수학과 논리로 표현할 수 없는 모호한 부분 또한 모델링해야 하기 때문에 과학모델보다 더 나은 것을 찾아야 합니다.

The science of computer technology is that of a free phenomena.

 

 

RSMer's Page

"Discovery and Design"  RSM의 "생성과 사용"만큼 멋진 제목입니다.

멋지긴 한데 읽어내기는 쉽지 않습니다. 읽어내는데 너무 시간이 걸리면 정리된 내용만 확인하시고 넘어가셔도 됩니다.

저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback Address :: http://umlcert.tistory.com/trackback/621 관련글 쓰기
Name
Password
Homepage
Secret
2012/04/09 17:17

저자는 두 가지 관점에서 과학을 다룹니다. 하나는 철학으로서의 과학이고 다른 하나는 인간제도로서의 과학입니다. 이장은 첫 번째 관점을 다루는 부분입니다. 두 번째 관점은 2부에서 다룹니다.

 

저자는 왜 과학에 집착하는 걸까? 

We know that the software process is a transformation from the identification of a need in the world into a set of computer programs that operate in the computer.
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.

 

왜 과학철학인가?

The philosophers of science study the scientists' actions and characterize what science is and how it ought to be conducted.

본문의 내용은 안 읽고 가는 것이 정신 건강에 좋을 것 같습니다. 이번 기회에 과학철학에 대해 관심을 가졌고, 그와 관련된 책 한 권 정도 읽은 것으로 만족하고 넘어가겠습니다.

 

과학철학을 살펴본 저자의 결과는 무엇인가?

This brief introduction to the philosophy of science holds no hope for the discovery of any preexisting guidelines for computer science. We must design our own science, and its criterion for success will be how well it serves us.

 

 

RSMer's Page

과학은 관찰자의 입장에서 시작하는 것으로 창조에 대한 추측을 할 뿐입니다. 추측을 통해 답을 구하는 것은 쉽지 않습니다. 그래서 과학은 최선의 방법이 될 뿐입니다.

소프트웨어 개발은 생성과 사용에 대한 것입니다. 문제영역인 도메인은 사용의 관점을 강조하고, 해결책 영역인 소프트웨어는 생성의 관점을 강조합니다. 저자가 말하는 tension은 생성과 사용이 무엇인지를 알고 그들이 어떻게 관련되는지를 알면 해소됩니다.

저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback Address :: http://umlcert.tistory.com/trackback/620 관련글 쓰기
Name
Password
Homepage
Secret
2012/04/05 12:08

초창기에 비해 저자의 시대에도 computing은 매우 다르게 변해 있었고, 그 다음 50년에는 더 큰 변화가 있을 것입니다. computing은 세상을 바꾸고 있습니다. 저자는 특히 설계에 있어서의 변화에 주목합니다.

In this book I explore a different feature of computers: their ability to alter the very concept of design—the design of artifacts and the design of software itself. As I will show, the computer program is not an
object; rather, it is the design of an object.

 

저자는 다음 50년을 준비합니다. 지금의 소프트웨어 개발 방법으로는 안된다고 생각합니다. computing이 급변하는 만큼 소프트웨어 개발 방법도 급변해야 된다고 생각합니다. 패러다임의 변화에 해당하는 변화가 있어야 된다고 합니다.

패러다임의 변화를 위해서는 기초부터 다시 세워야 합니다. 저자는 과학과 기술로 출발해서 컴퓨터 과학과 소프트웨어 공학을 살펴보려고 합니다.

It examines science and technology independent of the specifics of computer science and software engineering. It seeks to grasp the nature of science so that we may comprehend the role of computer
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장으로 들어가기 전에 과학철학에 대한 책을 하나 정도는 읽고 들어가는 것이 좋을 것입니다.

 

저자는 새로운 설계의 시대에 어떻게 설계를 하고자 하는 것일까요? 다음 대목은 그것을 알 수 있게 해주는 부분입니다.

The software process is initiated by the need to respond to a real-world problem, but the technology used to create the solution must be expressed as formal models of computation (i.e., as computer programs). Thus, the process may be thought of as one that goes from an informal need (in-the-world) to a formal model (in-the-computer). Moreover, it is this transition from the informal to the formal that constitutes an underlying tension that manifests itself in many ways.

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

대부분의 소프트웨어 개발자들은 저자와 마찬가지로 소프트웨어 개발의 문제영역인 도메인이 informal하다고 생각합니다.

그에 비해, RSM은 도메인은 대부분 formal하고, 약간의 informal한 부분이 있다고 말합니다. 대부분 informal하게 보이는 것은 표현 방식이 달라 formal한 것이 informal하게 보이기 때문입니다.

RSM은 저자가 말하는 tension을 무효화시키기 때문에 tension을 줄이려는 노력이 필요없게 됩니다.

 

 

 

저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback Address :: http://umlcert.tistory.com/trackback/619 관련글 쓰기
Name
Password
Homepage
Secret
2012/03/31 16:10

프롤로그는 저자가 왜 이렇게 책을 구성했는지를 알 수 있게 합니다.

 

저자는 자신을 소프트웨어 공학자라고 소개하고 있습니다.

소프트웨어 공학자는 소프트웨어를 develop하고 maintain합니다.

저자는 소프트웨어 공학자로서 어떻게 소프트웨어를 develop하고 maintain해야 하는지에 대한 답을 찾기 위해 노력했고, 그 결과가 이 책입니다.

I am a software engineer, and this book seeks an answer to the question, How should we develop and maintain software?

 

소프트웨어에 대한 다음과 같은 저자의 인식은 그가 왜 설계에 초점을 맞추는지를 알게 합니다.

Software is quite unlike any other tool. It is a self-realizing design; that is, the design is the product and the product is its design.  Software can be seen as the final step on the path to the elimination of manual manufacture.

 

저자는 근본 원리를 찾고 싶어 했던 것 같습니다.

My goal in this book is to build a theory on first principles.

 

무엇인가를 절실히 찾는다는 것은 현재 상황에 불만이 있다는 것입니다. 저자는 당시의 소프트웨어 개발 방식을 확 바꿔 버려야 된다고 생각했을 것입니다. ‘주먹구구식으로는 안 돼!’라고 말하고 싶었을 것입니다.

근본원리를 찾으려는 노력의 부산물이 이 책의 1부와 2부가 아닌가 생각해 봅니다.

당시의 소프트웨어 공학은 저자가 원하는 것에 초점을 맞추고 있지 못했을 것입니다. 이런 상황에서 저자는 먼저 소프트웨어 공학이 무엇인지를 분명히 정의하고 넘어가야 할 것입니다.

Software engineering

The application of tools, methods, and disciplines to produce and maintain an automated solution to a real-world problem.

 

소프트웨어 공학을 이야기하다보니 컴퓨터 과학이 등장했을 것입니다. 이로부터 공학과 과학을 다루기 시작했을 것이고, 이에 대한 저자의 지적탐험의 결과가 1부일 것입니다. 1부 내용이 어려운 이유가 다 있습니다.

The construction of an answer requires an understanding of the philosophy of science, the relationship of science to technology, and the concepts of truth and knowledge.

 

self-realizing design으로 소프트웨어를 바라보는 저자가 어떻게 소프트웨어를 설계할 것인가에 집중하는 것은 너무도 당연한 일입니다.

저자는 설계의 인간적인 면을 먼저 다룬 후에 소프트웨어 설계를 본격적으로 다룹니다.

Part II. "Ecological Design"

The focus is on the human aspects of responding to needs and designing satisfactory responses.

Part III, "Software Design."

 

 

RSMer's Page

소프트웨어 개발은 설계로 시작해서 설계로 끝납니다. 소프트웨어 개발자는 모두 설계자입니다.

소프트웨어 개발은 설계를 개발하는 것이고, 소프트웨어를 유지보수하는 것은 설계를 유지보수하는 것입니다.  

 

 

저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback Address :: http://umlcert.tistory.com/trackback/595 관련글 쓰기
Name
Password
Homepage
Secret
2012/03/31 13:39

Bruce I. Blum, Beyond Programming : To a New Era of Design, Oxford University, 1996

 

제목을 보면 저자는 프로그래밍 하는 것을 넘어서 설계의 시대로 가자고 하는 것 같습니다.

그것은 패러다임의 변화와 같은 것이라고 합니다.

I conclude, therefore, that a shift in the software development paradigm is necessary. In the words of the title, I propose that we move beyond programming.

 

무엇을 어떻게 바꾸자고 하는 것일까요?

이것을 아는 것이 이 책을 읽는 첫 번째 목적이 될 것입니다.

I am content to explain why 1 believe the present paradigm is flawed and to demonstrate that a viable alternative exists.

 

패러다임을 바꾸자고 했기 때문에 그 내용이 거창해질 수밖에 없을 것 같습니다.

책은 다음과 같이 세 부분으로 되어 있습니다.

1부. Science and Technology

2부. Ecological Design

3부. Software Design

I have divided the work into three, roughly independent parts.

Each addresses a different set of questions:

1. What is the nature of science and scientific knowledge?

2. What are the human dimensions of design?

2. What is the essence of software engineering?

역시 거창합니다. 1부와 2부 내용은 만만치 않아 보입니다. 더 어렵게 하는 것은 그것이 관심사항이 아니라는 것입니다.

저자는 이것을 알고 3부부터 읽어도 된다고 하는군요. 저자가 1부와 2부를 이렇게 구성한 것은 다 이유가 있어서 일 것입니다. 우리는 정공법을 택합니다. 굴하지 않고 처음부터 하나씩 하나씩 진행하겠습니다.

But the reader may find my presentation too philosophical or obscure. Therefore, she may begin with Part III and use its material as the motivation for continuing on to the other two parts.

 

RSMer's Page

출판된지 꽤 되었지만 시간을 투자할 만한 책입니다.

읽고 고민하다보면 많은 깨달음을 줄 것입니다.

저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback Address :: http://umlcert.tistory.com/trackback/594 관련글 쓰기
Name
Password
Homepage
Secret
2011/04/11 17:23

본격적으로 들어가기에 앞서, 이 책 전반에 걸쳐 등장하는 개념들을 다룹니다. 

우리는 이 부분을 읽으면서 다음과 같은 질문에 대한 답을 얻으려고 노력해야 합니다. 

소프트웨어 아키텍처? 소프트웨어 아키텍처 문서화?
아키텍처 뷰? 아키텍처 스타일?
잘 된 아키텍처 문서화?


소프트웨어 아키텍처?  
아키텍처는 아직까지 하나의 통일된 정의를 갖지 못하고 있습니다. SEI 웹사이트에 150개가 넘는 정의를 수집해놓았다고 합니다. 이 책에서는 2003년에 출판된 Bass, Clements, Kazman의 Software Architecture in Pranctice 2nd ed의 정의와 비슷한 정의를 사용한다고 합니다. 

The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relations among them.
By “externally visible properties,” we are referring to those assumptions other components can make of a component, such as its provided services, performance characteristics, fault handling, shared resource usage, and so on. (Bass, Clements, and Kazman 2003, p. 27)


이 정의의 어떤 점이?

The definition emphasizes the plurality of structures present in every software system.
These structures, carefully chosen and designed by the architect, are the key to achieving and reasoning about the system’s design goals. And those structures are the key to understanding the architecture.
Therefore, they are the focus of our approach to documenting a software architecture.
Structures consist of elements, relations among the elements, and the important properties of both. So documenting a structure entails documenting those things.

아키텍처를 처음 접하는 분들이 많이 하는 질문 중의 하나는 '아키텍처와 설계가 어떻게 다른가"입니다.
저자는 이 부분에 대해서 명쾌한 설명을 합니다.

Architecture is design, but not all design is architectural.

The architect draws the boundary between architectural and nonarchitectural design by making
those decisions that need to be bound in order for the system to meet its development, behavioral, and quality goals. All other decisions can be left to downstream designers and implementers.

Decisions are architectural or not, according to context. If structure is important to achieve your system’s goals, that structure is architectural.
But designers of elements, or subsystems, that you assign may have to introduce structure of their own to meet their goals, in which case such structures are architectural: to them but not to you.

다음과 같은 충고도 새겨 둘 만 합니다. 

And (repeat after me) we all promise to stop using the phrase “detailed design.”
Try “nonarchitectural design” instead.



소프트웨어 아키텍처 문서화?  
우리는 소프트웨어 아키텍처를 문서화하려고 이 책을 읽고 있기 때문에, 왜 소프트웨어 아키텍처를 문서화해야 하는지에 대해서는 간단히 몇 문장을 인용하고 넘어갑니다. 나중에 누군가를 설득할 필요가 있을 때 다시 이 부분을 읽으면 됩니다.  

Doing business without advertising [or designing an architecture without documenting it] is like winking at a girl in the dark. You know what you’re doing, but nobody else does. —Steuart Henderson Britt

Fundamentally, architecture documentation has three uses.
1. Architecture serves as a means of education.
2. Architecture serves as a primary vehicle for communication among stakeholders.
3. Architecture serves as the basis for system analysis and construction.



아키텍처 뷰?
아키텍처는 한 번에 이해할 만큼 단순하지 않습니다. 복잡합니다. 다수의 관점을 가지고 다루어야 합니다. 

A documentation package for a software architecture can be composed of one or more view documents and documentation that explains how the views relate to one another, introduces the package to its readers, and guides them through it.

아키텍처 뷰에는 여러가지가 있습니다. 그 중 잘 알려진 것이 4+1 뷰 입니다. 이 책에서는 Module, Component-and-Connector(C&C), Allocation과 같이 3개의 뷰를 제공합니다. 

컴포넌트기반개발(CBD)을 경험한 적이 있는 사람이라면, CBD의 컴포넌트와 Module뷰의 모듈과 C&C 뷰의 컴포넌트를 비교하지 않도록 조심해야 합니다. 혼란에 빠질 수 있습니다. Module뷰의 모듈과 C&C 뷰의 컴포넌트에 대해서 알고 둘 사이의 차이를 비교할 수 있으면 됩니다.


아키텍처 스타일?

An architecture style is a “specialization of element and relation types, together with a set of constraints on how they can be used”.

아키텍처 스타일과 아키텍처 패턴이 어떻게 다른지를 설명하는데, 크게 관심 갖지 않아도 될 것 같습니다. 사실 이 책에서 제시하는 스타일 중에 아키텍처 패턴에서 언급되는 것들이 많이 있습니다.


문서화를 잘하기 위한 7가지 규칙

1. Write documentation from the reader’s point of view.
2. Avoid unnecessary repetition.
3. Avoid ambiguity.
4. Use a standard organization.
5. Record rationale.
6. Keep documentation current but not too current.
7. Review documentation for fitness of purpose.




RSMer's Page

1. 아키텍처는 복잡한 것입니다. 따라서 복잡한 것을 가장 잘 다룰 수 있는 방법인 모델링 기술을 사용할 수 있습니다. 아키텍처 모델링이 필요하다는 것입니다.
다수의 뷰를 가지고 아키텍처를 다룬다는 것은 모델링 기술을 사용한다는 의미를 담고 있습니다. 복잡한 것을 다수의 관점에 따라 추상화하는 것이 모델링입니다.

2. 아키텍처 결정이 무엇인지에 대해서 다음 문장을 통해 이해하고, 외우고, 입으로 말할 수 있도록 합니다.
Architectural decisions are ones that permit a system to meet its quality attribute and behavioral requirements. All other decisions are nonarchitectural.
저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback Address :: http://umlcert.tistory.com/trackback/500 관련글 쓰기
Name
Password
Homepage
Secret
prev"" #1 #2 #3 #4 #5 ... #7 next