본문 바로가기

JAVA_School/JAVA_School_class

[0308] 패턴중심적사고와프로그래밍

소통이라는 것은 상대방의 입장에서 뭐를 두지 않고 대부분 자기가 생각하는 바를 얘기를 한다. 요구사항을 얘기함녀 고객의 말을 듣고 고객이 뭘 원하는지 해야한다 고객이 틀렸다고 하는 사람은 그 직장에서 나가라

고객은 stack holder이다. 인생에서도 stake holder이 있다. 사람 뿐만 아니라 관계에 있어서 stake holder은 뭘 하는지 이해하고 모든 것의 시작이다. 은행 시스템의 stake holder은 무엇이냐. 

SW System Development

- Requirements

- Domain knowledge

자동차를 만드려면 자동차, 실제 담당자들은 여러분을 모를 것이다. 대강 알아서 처리했지? 논리적으로 하는건 잘 안하거든 프로그램은 논리 명시적으로 프로그램을 짤 수 있기에 일이나 이냐 아주 명확하게 알지 않으면 프로그램을 짤 수 없다.

일단 가서 업무를 배운다.

컴퓨터 공부를 하고 학교 시스템 .. 컴퓨터 시스템을 ㅐ워와서 전문 영역 지식을 배우는게 낫다. 따라서 Domain 영역의 지식.

컴퓨터 지식을 익히고 나면 해당 영역의 언어를 이해하고. 새로운 단어를 배우는 것이 공부를 하는 것이다. 예를 들어 고혈압이다. 이러한 것들에 이해하는 것이 바로 공부다.

일반적으로 enterprise architecter 카드면 카드 증권 학교 쇼핑몰 그런데를 가는 것이다. 그래서 회사 일반적인 회사의 회계관리 시스템 조직관리 시스템 그쪽의 전문가가 되는 것이다.

시간이 지나면 지날수록 컴퓨터 시스템을 이해하는 것이 업무의 이해보다 어렵다. 그래서 CEO들을 보면 스티브잡스도 그렇고 다들 해당 경영 전문가가 아니다. 그렇게 해선 안 된다.

컴퓨터 시스템을 이해해야지만 마케팅 할 수 있고, 유튜브나 sns나 .. 등

이해를 못하고.. 하여튼 제일 중요한 것은 컴퓨터 기술을 읽는 것인데 잘 못 읽으면 알 수 없다.

컴퓨터 기반 시스템을 알아야한다. 우리들이 공부하는 영역은 아니다. 

Domain이 영역이 있으면 IT System이 있고 컴퓨터 없던 시절엔 만ㅎ은 사람이 일하고 있었는데, 나중에 컴퓨터가 사람을 대체하기 시작했다. 나중에 완전히 똑똑해지면 미래사회 사람 하념ㅇ도 없고 .. 사람 머릿속 까지 들어가잖아

IT System을 개발하려면 IT System을 이해해야 한다. 전문성을 가져야 한다. 의료 시스템은 CT나 등등.. 그러한 것들의 요구사항은 어디서 오냐면 Domain Expert 도메인의 전문가들이 가지고 있다.

진짜 중요한 영상은 어디서 오냐면 은행은 은행을 사용하는 고객이 있고 예금하고 그런 사람들 환자 ... 가있다.

도메인 expert가 있고 use Context - user

사용자 입장에서의 요구사항, 하나는 해당 전문지식으로 부터의 요구사항 이 두개는 매우 다르다.

만약 취직을 하면 신규 개발할 일은 매우 드물다. 대부분이 시스템이 돌아가고 있고 운영을 하면서 조금씩 수정한다. 이러한 요구사항이 어디서 오냐면 user가 사업 모델을 약간 바꾸고 여기 안에가 추가되는 경우가 있다.

요구 사항을 파악하려면 고객이 진짜 별일이 다 있다.. 증권같은경우 다 집에서 앉아 컴퓨터하잖아.

저 끝에 있는 폰트의 색을 초록색으로 바꿔달라는데 몇백억 쓴 곡객, 다른 사람은 빨간색 원함. 고객은 절대 틀릴 수 있다. 그 직장에 있는 경우 맞다는 거다.

말도 안 되는 소리를 가지고 그 직장은 너희들이 좋은 시스템을 받을 수 없다.

엔지니어는 뭐하는 사람인가?

목적을 이뤄서 경제적 이익을 내야해 과학자는 그냥 열심히 공부해서 자연의 이치를 밝히는 것이 끝이다. 엔지니어는 목적을 이루고 경제적 가치를 만드는 것이다. 그런 엔지니어가 과연 고객이 틀리다하면 맞겠어? 

말이 안 된다. 다양한 가능성을 두고 유연하게 만들고 고객이 만족하는 품질을 제공하는 것이 유능한 엔지니어가 되는 길이다. 얼마나 좋은 품질적인 요소를 만드는 것이 경쟁력이다. 고객은 절대 틀리지 않는다. 고객의 요구를 들어주려고 노력하고 해당 영역의 전문가가 되어야 하고 컴퓨터 소프트웨어 엔지니어링을 가져야 한다.

고객의 언어가 다르고 고객에게 설명을 해. 빨간색으로 이거만 바꿔줘. 이게 os가 있는데 백그라운드 컬러 ~ ,, 하면 할아버지가 어떻게 알아? 거기 언어가 다르지. 

의사야. 거기요 레이저 시저가 있는데 니들 못 알아 듣잖아. 이러한 단어들을 정리를 해야하는데 이걸 내가 해야한다. 그게 분석이다. 이걸 분석한다고 봐야한다. 고객의 언어를 가지고 논리적으로 완성을 해야한다. 고객들은 모호성이나 완전성에 대한 예가 없다. 

논리적으로 정리해야 한다. 고객의 관점에서 논리적 정의, 시스템을 만들기 전에 디자인을 한다. 구현의 관점에서 정의를 하는 것이다. 

Analysis 고객의 관점에서 정리

implementation : 구현 방법의 선택, test

test 조직이 굉장히 크다. 우리들이 하는 것은 둘중에 하나다. 학교에서 전산팀을 가지고 있어 시스템을 개발하진 않는다. 유지보수. 개발하고 나면 응용만하면 된다. 어디가서 대형 시스템을 받는 것이다.

 

과제: 네모를 딱 하면 네모가 나오고 동그라미를 딱 그리면 동그라미가 나오고 동시에 체킹되는건 안 된다. 자동으로 딲딲딱 애가 없어져야한다 동시에 line이 나오면 안 된다.

마우스로 그림 그리는 것을 숙제로 해봤나? 마우스 놓으면 그림그리기.. 도형그리기