( 주 ) 휴즈플로우. DesignDevelopment.

Slides:



Advertisements
Similar presentations
의료정보팀 박수완 강남세브란스병원 GANGNAM SEVERANCE HOSPITAL.
Advertisements

Business Unit or Functional Area 제 4 차 급식소위원회
2 주 실습강의 학기, 소프트웨어 설계 및 실험 ( Ⅰ ). Artificial Intelligence Laboratory Preview  웹 2.0  RIA  웹과 실버라이트의 실행 구조  Silverlight with VS 2008  설치 프로그램.
키보드 보안 순천향대학교 정보보호학과 임강빈 교수.
한옥과 신한옥의 개념.
ch19–9. 악의적인 소프트웨어 - Malicious Software -
아름다운 이들의 행복한 길음안나의 집.
전남행복수업 design 독서ㆍ토론 수업 지원 자료 활용 목포유달초등학교 김미향.
- SW_Desing Study Group -
전남행복수업 design, 독서·토론수업 연구의 개요를 말씀드리겠습니다..
Master Thesis Progress
Chapter 9. 컴퓨터설계기초 9-1 머리말 9-2 데이터 처리장치 (Datapath)
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
학습목표 5장. 오픈지엘 기본틀 논리적 입력장치를 설정하는 이유와 종류를 이해한다. 세 가지 입력모드의 차이점을 이해한다.
GTK+ 프로그래밍 (2) SNSLAB 발표 : 문동규.
D. 지뢰찾기 분석 설계 예제.
Silverlight (2) – Deep Zoom & Expression Blend
사 업 설 명 회 -주식회사 이 글 스텝보드(StepBoard).
2004년 예비신자 오리엔테이션 2004년 3월 13일 (토) 오후 8시 천주교 수원교구 상촌성당 [티없이 깨끗하신 성모성심]
Lab 3 Guide: 교재 4장 대화상자 예제. - 프로파일 입력 ( 쪽)
MelOn WP8 Developer Guide
3조 오세혁 김문환 김용현.
Chapter 11 – 예외 처리 Outline 11.1 설계 쟁점 11.2 Pl/I의 예외 처리 11.3 Ada의 예외 처리
10장 예외 처리 프로그래밍 언어론 10.6 Pascal과 C의 에러 처리 10.1 설계 주제 10.2 PL/I의 예외 처리
Toad for SQL Server 제품 소개서 – 프로넷소프트㈜.
프로그래밍 언어론 2004년 가을학기 창 병 모 숙명여대 컴퓨터과학과.
IOC, DI 2015 Web Service Computing.
3주 실습강의 학기, 소프트웨어 설계 및 실험(Ⅰ).
- Make Processes Manageable -
Chapter 05. 클래스 완성. chapter 05. 클래스 완성 01. 복사 생성자 복사 생성(Copy Construction) 생성될 때 자신과 같은 타입의 객체를 변수로 받아, 이 객체와 같은 값을 갖는 새로운 객체를 생성하는 것 명시적인 생성 과정뿐만.
ASP.NET Mobile Controls
학습목표 5장. 오픈지엘 기본틀 논리적 입력장치를 설정하는 이유와 종류를 이해한다. 세 가지 입력모드의 차이점을 이해한다.
Todo list Universal & UWP app
| winglish.com IT 개발본부 2008/01/10
Chapter 4 The Von Neumann Model.
5장. 오픈지엘 기본틀 학습목표 논리적 입력장치를 설정하는 이유와 종류를 이해한다. 세 가지 입력모드의 차이점을 이해한다.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
제 1 장 소 개 시스템 분석 및 설계 허철회 2006학년도 2학기 상주대학교 컴퓨터공학과.
강남 DataBinding 스타일 Windows 8 앱개발자라면 꼭 알아야할 개발자가 알아야할 Binding.
Digital System Experiment Lab. Orientation
Cairngorm(캔곰) : Flex UI 프레임워크
강의 소개, 자료구조의 개념, SW 개발과 자료구조
장 흥 섭 경영학부 교수 현대소비사회와 소비자행동.
3. Spring 프레임워크의 IoC 컨테이너 개념
소비자 행동 장 흥 섭 경북대학교 교수 / 지역시장연구소장 1.
캠퍼스 리크루팅 안내 (화) 삼성전자 글로벌기술센터
10. 소프트웨어 아키텍처 뷰 설계 명지대학교 융합소프트웨어학부 김정호 교수.
매스커뮤니케이션 신문 목원대학교 서 진 희.
[CPA340] Algorithms and Practice Youn-Hee Han
| winglish.com IT 개발본부 2008/01/17
SpringFramework 중간고사 요약 REST by SpringFramework.
Spring DI 이해 및 활용.
자바 5.0 프로그래밍.
소프트웨어 형상관리: 목차 변경 및 형상관리의 기초 개념 형상항목 확인 및 버전관리 변경관리 감사 및 감사보고 99_11
Operating System Multiple Access Chatting Program using Multithread
Chapter 02. 소프트웨어와 자료구조.
JVM의 구조와 메모리 모델 JVM의 내부 구조 클래스 파일 클래스 로더 메소드(method) 영역 힙(heap) 영역
JSP 빈즈 1.JSP 빈즈? JSP와 연동을 위해 만들어진 컴포넌트 클래스를 말한다. JSP 빈즈는 컨테이너에 위치하며, 데이터 처리와 공용화된 기능을 제공하기 때문에 빈즈를 잘 활용하면 프로그램의 중복을 줄이고 좀더 원할한 유지보수가 가능한다. 물론 , 모든 JSP를.
담당 : 황기태 교수님 학번 : ㈜ 이름 : 조성대 제출 :
C# 10장. 참조형.
4주 실습강의 학기, 소프트웨어 설계 및 실험(Ⅰ).
공학설계입문 블로그 제작 목차 전기공학과 정지용.
천국 가는 길 천국 가는 길 ♧ 천국 가는 길 ♧ 1. 죄와 사망(지옥) 1) 사람의 3가지 공통점 - 죄인, 죽음, 심판
6월 1주 주간메뉴표 NEW 엄마손 조식 쉐프 삼촌 중식 참새 방앗간 석식 ◎원산지 안내 : 쌀(국내산)
▶서류관리 프로그램 1. 로그인….2 2. 서류등록 … 서류도착 서류스티커발행
9장. 프로그램 평가.
C.
DISC 이해★ 오해 오해.
Presentation transcript:

( 주 ) 휴즈플로우

DesignDevelopment

is not The Holy Grail!

WHAT’S A COMPUTER THIS?

FOR TO COMPUTE WHAT? TO COMPUTE TO USE

TO WHAT? COMPUTER PROGRAMS

Input Output interaction Processing

Input Processing Output 입력 로직 수행 표현 == == ==

입력 로직 수행 표현 CommandModel(data+logic)View* => => => * 비주얼 표현이 목적인 애플리케이션인 경우

검색

Friend[] GetMyFriends() { return null; }

silverlight 검색 검색 결과 : 0 건 앞면뒷면 * 조립 매뉴얼은 필수

앞면뒷면 XAML

DEMO 우리는 어떻게 새로운 도구를 예전과 완벽하게 똑같이 사용하는가

View XAML Design, x:Name or Event Code-Behind Event Handlers, State, Operations Model Data, Services, Business Logic

<Button Content="Click me" x:Name="MyButton" Click="OnMyButtonClick" /> void OnMyButtonClick(…) { MyButton.Content="Clicked!"; } XAMLCode-behind

* 디자인 구성 요소가 ‘ 문자열 ’ 로 코드와 강력하게 엮여 있음. * 디자이너가 디자인 구성 요소를 자유롭게 수정하기 어려움. * ‘ 표현 ’ 을 담당하는 View 의 코드 비하인드에 ‘ 표현 ’ 과 직접적인 연관이 없는 코드가 섞이게 됨. * 디자인과 엮여 있어 ‘ 코드 ’ 부분만 따로 테스트할 수 없음. * 간단한 인터랙션도 ‘ 코드 ’ 를 거치지 않고서는 ‘ 표현 ’ 할 수 없어 디자이너의 역할이 제한됨.

DEMO

XAML

* 데이터가 변경되거나 입력이 변경될 때마다 불필요한 코드 를 작성할 필요가 없음 * 코드로도 작성이 가능하지만 익스프레션 블렌드를 사용하 는 것이 훨씬 더 효율적이고 원활한 협업이 가능 * 특히 ItemsContrl, ListBox 의 ItemsSource 속성에 ObservableCollection 을 설정하면 매우 편리하게 컬렉션을 다룰 수 있음

* 디자인 단계에서는 바인딩 한 속성에 어떤 값이 표시될지 직접 보면서 작업하는 것이 불가능 * 결국 이전 처럼 ‘ 임시값 ’ 을 설정하여 디자인을 마치고 다시 바인딩을 설정하게 되어 더욱 복잡도가 증가 * 여전히 ‘ 표현 ’ 이 목적인 컴포넌트가 비즈니스 로직 영역의 모델에 대해 의존적인 형태

Blend 블렌드 + ability 가능한 능력

DEMO ViewModel 과 Mock-up ViewModel 을 사용한 Win-Win 전략

View XAML Design Code-Behind Zero~Least-code Model Data, Services, Business Logic View-Model Data, State, Operations DataBinding

if (DesignerProperties.IsInDesignTool == true) { // 디자인 모드용 Mock 데이터 설정 } else { // Runtime 용 초기화 수행 }

ViewModel View A View B VIEW C

* ViewModel 이 View 에 대해 1:n 관계일 때 해당 ViewModel 은 지 속성 persistency 을 가져야 함 * ViewModel 의 생성 시점이나 교체 시점 즉, 라이프 사이클을 관 리할 필요가 있음 * 또한 ViewModel 코드에 Mock 역할을 하는 코드를 넣는 것은 불 합리 하므로 Mock 역할을 하는 클래스를 따로 관리할 필요가 있 음 * 이에 따라 ViewModel 을 ‘ 관리 ’ 하는 또 다른 기능이 필요

DEMO 간단한 Service-locator 사용

<Application … 생략 … xmlns:local="clr-namespace:PhotoSearch">

<UserControl … 생략 … DataContext="{Binding Source={StaticResource Locator}, Path=PhotoSearchViewModel}">

ViewModel A View A View B VIEW C ViewModel B Model

* 여전히 사용자의 명령에 대응하는 이벤트 처리를 코드 비 하인드에서 수행 * 따라서 여전히 디자인 변경에 제약, 혹은 주의가 필요 * Zero-code 실현 !

DEMO

View XAML Design Code-Behind Zero~Least-code Model Data, Services, Business Logic View-Model Data, State, Operations Commands DataBinding

* 원래 커맨드 패턴은 애플리케이션 전역에 적용되는 ‘ 명령 ’ 에 적 합 ( 예를 들어 상단에 있는 메뉴와 같은 공통 명령 ) * MVVM 과 커맨드 패턴을 조합할 때에는 ViewModel 에 해당 View 에서 수행할 명령을 등록하고 바인딩하여 사용하는 것이 편리함 * 기본적으로 실버라이트는 Button 에서 파생된 컨트롤만 Command 를 설정할 수 있음 * 그러나 InvokeCommandAction 이라는 Behavior 를 사용하여 버튼 외의 컨트롤에서도 명령을 실행 가능

* public ICommand SearchCommand { get; set; } 속성은 형식으로 단순히 인터페이스만 선언해도 무방 * SearchCommand = new ActionCommand(e => Search(e)); 와 같이 실제 커맨드가 실행되었을 때 처리할 메서드를 등록 * 이 때, e 는 CommandParameter 로 전달된 오브젝트가 됨 * 버튼의 Command 속성에 위에서 선언한 Command 를 바인딩하 고 CommandParameter 속성에 전달할 데이터를 바인딩

* Behavior 에 ICommand 타입의 속성을 만들면 해당 속성은 복수의 Trigger 로부터 InvokeCommandAction 을 실행하게 됨 * 복수의 이벤트로부터 동일한 명령을 실행하는 경우 편리함

* 이 많은 걸 언제다 …

MVVM Data-binding Dependency-system Command Pattern Behaviors Dependency Injection Factory Pattern Unit Test Observer Pattern Event Aggregator MVVM Data-binding Dependency-system Command Pattern Behaviors Dependency Injection Factory Pattern Unit Test Observer Pattern Event Aggregator

is not The Holy Grail!

DODONT * 데이터를 CRUD 할 때 최적 * 동일한 데이터를 각기 다른 형식의 뷰로 보여줄 때 * 같은 뷰에 여러 종류의 모델 에서 받은 데이터를 보여줄 때 * 동적으로 모듈이 로드 / 언로 드 될 때 * 렌더링이 복잡한 게임 * 커스텀 컨트롤을 구현할 때 * 복잡한 시퀀스의 애니메이션이 더 중요할 때 * 뷰와 데이터가 매우 밀접한 관계 를 가질 때 ( 커스텀 컨트롤을 고 려 )

* MVVMLight: * * 그나마 정리와 유지보수가 잘 되어 있음 * 그러나 기능상 특별히 눈에 띄는 점은 없고 SL3 와 SL4 를 동시 지원하면서 발생하는 불필요한 요소가 있음 * HugeFlow MVVM Library: * * 상당히 특이하고 편리한 Command 기능을 제공 * 그러나 SL3 를 기반으로 작성되고 오랫동안 유지보수가 되지 않아 SL4 환경에서는 다소 불합리한 면이 있음 * 참고 링크 : * 주의 ! 국내 자료는 대체로 SL3 를 기반으로 하여 SL4 에서는 더 편리하게 만들 수 있는 경우가 있음 * * *

* * * * * * * * * * * * *

우월한 이미지를 생산하는 미지의 화덕 이미지 가공 코딩 또 코딩 무한 디버깅