실행 취소
Undo실행 취소는 많은 컴퓨터 프로그램에서 구현되는 상호 작용 기술입니다.문서의 마지막 변경 내용이 지워지고 이전 상태로 돌아갑니다.그래픽 처리와 같은 일부 고급 프로그램에서는 편집 중인 파일에 대해 마지막으로 수행된 명령을 실행 취소하면 비활성화됩니다.원래대로 되돌릴 수 있는 가능성이 있기 때문에 사용자는 실수를 두려워하지 않고 탐색하고 작업할 수 있습니다. 왜냐하면 쉽게 원래대로 되돌릴 수 있기 때문입니다.
실행 취소에 대한 기대는 쉽게 이해할 수 있습니다.예측 가능한 기능을 갖추고 모든 "실행 불가능한"[1] 명령을 포함하는 것입니다.보통 실행 취소는 사용자가 실행한 모든 작업을 취소할 때까지 사용할 수 있습니다.그러나 실행 취소 목록에 저장되지 않은 작업이 있으므로 실행 취소할 수 없습니다.예를 들어 저장 파일은 실행 취소가 불가능하지만 실행되었음을 표시하기 위해 목록에 대기됩니다.보통 저장되지 않으므로 실행 취소할 수 없는 또 다른 작업은 스크롤 또는 [2]선택입니다.
실행 취소의 반대는 redo입니다.redo 명령어는 실행을 취소하거나 버퍼를 최신 상태로 만듭니다.
실행 취소 기능의 공통 컴포넌트는 사용자가 실행한 명령어, 완료된 액션을 저장하는 이력 버퍼, 이력 버퍼를 제어하는 실행 취소/재실행 매니저 및 사용자와 [3]대화하기 위한 사용자 인터페이스입니다.
대부분의 Microsoft Windows 응용 프로그램에서 실행 취소 명령의 키보드 단축키는 Ctrl+Z 또는 Alt+Backspace이고 다시 실행의 단축키는 Ctrl+Y 또는 Ctrl+Shift+Z입니다.
대부분의 Apple Macintosh 응용 프로그램에서 실행 취소 명령의 바로 가기는 Command-Z이고 redo의 바로 가기는 Command-Shift-Z입니다.
모든 플랫폼에서 편집 메뉴를 통해 실행 취소/재실행 기능에 액세스할 수도 있습니다.
역사
컴퓨터에서 작업을 원래대로 되돌릴 수 있는 기능은 사람들이 컴퓨터를 사용하는 [4]방식에 따라 여러 번 독립적으로 발명되었습니다.
1968년 브라운 대학에서 시작된 파일 검색 및 편집 시스템은 "undo"[5][6] 기능을 갖춘 최초의 컴퓨터 기반 시스템이라고 보고되었다.
Warren Teitelman은 [7]1971년까지 Undo 기능을 갖춘 BBN-LISP의 일부로 Programmer's Assistant를 개발했습니다.
Xerox PARC Bravo 텍스트 에디터는 [8]1974년에 Undo 명령을 실행 중지했습니다.1976년 랜스 A의 연구 보고서.밀러와 존 C.IBM의 Thomas, "Interactive Systems [9]사용 시 행동 문제"는 "사용자가 최소한 직전 명령(일부 특별한 'undo'[10] 명령어를 발행하여)을 '되돌리는' 것을 허용하는 것은 매우 유용할 것"이라고 언급했다.Xerox PARC 연구소의 프로그래머들은 키보드 단축키 Ctrl+Z를 undo 명령어에 할당했는데, 이는 개인용 컴퓨터 [11]시대에 텍스트 편집기와 워드 프로세서의 중요한 기능이 되었다.1980년, Xerox PARC의 Larry Tesler는 Apple Computer에서 일하기 시작했습니다.거기서 그와 빌 앳킨슨은 애플리자의 표준 고정장치로서 실행 취소 명령의 존재를 주장했다.앳킨슨은 리사의 애플리케이션 소프트웨어 개발자들에게 단일 수준의 실행 취소와 재실행을 포함하도록 설득할 수 있었지만, 여러 단계를 [citation needed]위한 로비에는 성공하지 못했습니다.애플은 리사의 후속작인 매킨토시를 선보였을 때 모든 표준 어플리케이션에서 "편집" 메뉴의 [12]첫 번째 명령어로 "실행 취소"를 포함하도록 규정했는데, 이는 오늘날까지 맥OS와 윈도우에서 표준으로 유지되고 있다.
1980년대에 다단계 실행 취소 명령어가 도입되어 사용자는 최신 [11]동작뿐만 아니라 일련의 동작을 되돌릴 수 있게 되었습니다.EMACS와 다른 시간 공유 화면 편집자들은 개인용 컴퓨터 소프트웨어 이전에 그것을 가지고 있었다.CygnusEd는 무제한 실행 취소/다시 실행 기능을 가진 최초의 Amiga 텍스트 에디터입니다.1982년에 도입된 워드프로세서 애플리케이션인 AtariWriter는 undo를 특징으로 했다.1984년 NewStar에 의해 출시된 또 다른 워드프로세서 프로그램인 NewWord는 삭제 [11]명령을 가지고 있었다.IBM의 VisiWord에도 삭제 취소 명령어가 있습니다.
모델 실행 취소 및 다시 실행
실행 취소 모델은 선형 또는 비선형 모델로 분류할 수 있습니다.비선형 실행 취소 모델은 스크립트 모델, us&r 모델, 3진 모델 및 선택적 실행 [1]취소로 하위 분류할 수 있습니다.
모델의 일반적인 속성은 다음과 같습니다.
- stable execution property: 상태는 명령어 순서 목록으로 나타납니다.즉, 명령어는 "원래 실행 [3]후 도달한 상태에서는 항상 실행 취소됩니다."
- 안정성이 약화된 실행:즉, 실행 취소가 실행되면 실행 취소된 명령에 의존하는 모든 명령이 실행 취소됨을 의미합니다.
- 안정적인 결과 속성:이 속성은 목록을 제외하고 안정적인 실행 속성과 비슷한 의미를 가집니다.명령어 순서 목록에는 명령어뿐만 아니라 명령어가 실행되었음을 나타냅니다.
- 교환:즉, 두 개의 다른 명령을 실행 취소 및 다시 실행한 후 도달한 상태는 역순으로 실행되었을 때 동일합니다.
- 최소 실행 취소 속성:"명령어 C의 실행 취소 조작은 명령어 C와 [3]C에 종속된 C보다 이전 명령어만 실행 취소한다"고 설명합니다.
선형 실행 취소
선형 실행 취소는 실행된 모든 명령의 이력을 저장하는 스택(Last in First Out(LIFO; 라스트 인 퍼스트 아웃) 데이터 구조)과 함께 구현됩니다.새로운 명령어가 실행되면 스택의 맨 위에 추가됩니다.따라서 마지막으로 실행한 명령만 실행 취소 및 이력에서 삭제할 수 있습니다.이력이 [1]비어 있지 않은 한 실행 취소를 반복할 수 있습니다.
제한된 선형 모형
제한된 선형 모델은 선형 실행 취소 모델의 증가입니다.이 모델에서는 이력 리스트에 다른 명령어가 포함되어 있는 동안 명령어가 실행되어도 속성이 유지되지 않기 때문에 선형 실행 취소에 대해 위에서 설명한 안정적인 실행 속성을 충족합니다.제한된 선형 모델은 새 명령을 추가하기 전에 기록 목록을 지웁니다.하지만 다른 제한 사항도 있습니다.예를 들어 이력 목록의 크기를 제한할 수 있으며 정의된 크기에 도달하면 처음 실행된 명령이 [1]목록에서 삭제됩니다.
비선형 실행 취소
선형 실행 취소와 비선형 실행 취소의 주요 차이점은 사용자가 실행된 명령을 임의의 순서로 실행 취소할 수 있다는 것입니다.최신 명령어를 실행 취소하지 않고 목록에서 명령어를 선택할 수 있습니다.[3]비선형 모델의 경우 이 모델을 구현하는 하위 클래스가 있습니다.
스크립트 모델
스크립트 모델은 사용자 작업을 명령어 스크립트의 편집으로 처리합니다.실행된 명령어 이력 리스트는 "스크립트로서 실행 취소의 효과는 [1]실행 취소된 액션이 처음부터 발생하지 않은 것과 동일하게 정의된다"고 해석됩니다.undo의 결과로 상태는 undo 명령어를 실행하지 않은 경우와 같아야 합니다.이 모델의 단점은 부작용을 피하기 위해 사용자가 실행 취소된 명령어와 현재 상태 간의 연결을 알아야 한다는 것입니다.그 중 하나가 중복일 수 있습니다.또 다른 문제는 "후속 명령어가 원래 직접 조작 인터페이스에서 실행된 것과 다른 상태에서 재작성된 경우" 원래 사용자 작업의 재해석이 항상 명확하거나 [1]잘 정의되지 않는다는 것입니다.
US&R 모델
이 모델의 특징은 명령을 건너뛸 수 있는 옵션이 있다는 것입니다.즉, 명령어 재실행을 건너뛸 수 있습니다.건너뛴 명령어는 건너뛴 것으로 표시되지만 삭제되지는 않습니다.새로운 명령어가 실행되면 이력 리스트가 유지되므로 실행된 명령어의 순서를 재현할 수 있습니다.순서는 방향 그래프인 이력 트리를 통해 기술할 수 있습니다.이는 "다른 브랜치에서 명령을 계속 재실행하여 그래프에 링크를 생성할 수 있기 때문입니다."[1]명령어 집합은 단순하고 이해하기 쉽지만, 사용자가 두 [1]단계 이상의 실행을 취소하고 싶을 때 스킵 및 링크 브랜치가 있는 복잡한 구조는 이해하기 어렵고 기억하기 어렵다.
삼항 모형
이 비선형 실행 취소 모델에는 실행 취소 및 다시 실행 외에도 회전 가능성이 있습니다.이것은 이력 목록과 redo 연산을 포함하는 분리된 redo 목록을 가진 상기 모델과 동일한 데이터 구조를 가지고 있다.회전 조작은 redo 목록의 마지막 명령을 그 앞에 설정합니다.이는 다시 지정할 다음 명령을 앞에 배치하여 선택할 수 있음을 의미합니다.한편, 회전은 "다음 실행 취소 작업에서 명령을 넣을 redo 목록의 위치를 선택하기 위해" 사용할 수 있습니다.[1]따라서 redo 목록은 순서가 없습니다."분리된 명령을 취소하려면 사용자는 여러 단계를 취소하고 다시 실행 목록을 순환한 다음 여러 단계를 다시 실행해야 합니다."[1]redo의 경우 원하는 명령이 위에 있을 때까지 목록을 회전해야 합니다.
선택적 실행 취소
Jakubec 등은 선택적 실행 취소는 모델이 제공할 수 있는 기능이지만 선택적 실행 취소에 대해서는 명확한 [3]정의가 없다고 말한다.저자들은 모델이 선택적 실행 취소를 지원할 때 가져야 할 함수를 선택했습니다."이력 버퍼에서 실행된 작업을 실행 취소할 수 있어야 합니다.실행 취소된 액션과는 무관한 액션은 그대로 두어야 합니다.[3]실행 취소된 명령어에서도 redo가 가능해야 합니다.선택적 실행 취소의 세 번째 기능은 "사용자의 직접 [3]요청 없이 어떤 명령도 이력 버퍼에서 자동으로 폐기할 수 없다"는 것입니다.선택적 실행 취소의 경우 실행 취소 및 재실행은 컨텍스트 밖에서 실행할 수 있습니다.크게 세 가지 문제가 있습니다.첫 번째는 실행 취소된 명령어가 원래 컨텍스트 밖에 있을 수 있다는 것입니다.이를 통해 처리해야 할 데드 레퍼런스가 있을 수 있습니다.두 번째 문제는 수정된 명령어를 실행 취소할 수 있기 때문에 실행 취소 후 어떤 상태가 나타나는지 해결해야 한다는 것입니다.세 번째 문제는 명령어 폐기 문제입니다.선택적 실행 취소는 목록에 포인터가 없으므로 [3]스택에서 명령을 폐기하지 않아야 합니다.
직접 선택 취소
직접 선택 실행 취소는 기록 트리에서 제한된 선형 실행 취소의 확장입니다.이 조작에서는 선택한 명령어의 복사본을 생성하여 이 명령을 실행하여 이력 목록에 추가합니다.비선형 연산 선택 실행과 선택 재실행의 두 가지가 정의되어 있기 때문에 보다 [1]대칭적입니다.
멀티 유저 애플리케이션
여러 사용자가 동일한 문서를 동시에 편집할 수 있는 경우 다중 사용자 실행 취소가 필요합니다.글로벌 다중 사용자는 편집을 수행한 사용자에 관계없이 문서에 대해 수행된 최신 작업을 되돌립니다.로컬 다중 사용자 실행 취소는 로컬 사용자가 수행한 작업만 되돌립니다. 따라서 비선형 실행 취소 구현이 필요합니다.
undo를 사용하여 여러 편집을 백트래킹할 수 있는 경우 redo 명령어는 액션 이력을 통과합니다.새로 편집하면 보통 redo 목록이 지워집니다.분기 redo 모델이 사용되는 경우 새 편집은 작업 기록을 분기합니다.
취소할 수 있는 이전 작업의 수는 프로그램, 버전 및 하드웨어 또는 소프트웨어 기능에 따라 달라집니다.예를 들어 Adobe Photoshop의 기본 실행 취소/재실행 스택 크기는 20이지만 사용자가 변경할 수 있습니다.다른 예로 이전 버전의 Microsoft Paint에서는 최대[when?] 3개의 편집만 취소할 수 있었습니다. Windows 7에서 도입된 버전에서는 이 제한이 50개로 늘어났습니다.
단순하고 단일 편집 취소 기능을 사용하면 실행 취소 명령 자체를 실행 취소할 수 있는 작업으로 간주하여 "redo"를 제거할 수 있습니다.사용자가 실행 취소 [13]명령을 사용하여 두 프로그램 상태를 전환할 수 있기 때문에 이를 플립 실행 취소 모델이라고 합니다.이것은 1990년대 초 다중 수준 실행 취소가 널리 채택되기 전의 표준 모델이었다.
구현 실행 취소
실행 취소는 다양한 패턴을 통해 구현할 수 있습니다.가장 일반적인 패턴은 명령 패턴과 기념 패턴입니다.
명령어 패턴
명령어 패턴은 동작 정보를 명령어개체로 캡슐화하는 소프트웨어 설계 패턴입니다.즉, 모든 액션이 오브젝트에 저장됩니다.추상 명령 클래스는 추상 실행 작업을 구현하므로 모든 명령 개체에는 실행 작업이 있습니다.실행 취소의 경우 실행한 명령의 효과를 취소하는 실행되지 않은 작업도 수행되어야 하며, 이 작업은 기록 목록에 저장됩니다.실행 취소 및 재실행은 execute 명령 또는 unexecute 명령 호출 [14]시 목록이 앞뒤로 실행되도록 구현됩니다.
단일 실행 취소의 경우 실행된 명령만 저장됩니다.명령어를 포함한 이력 리스트가 저장될 뿐만 아니라 리스트의 [14]최대 길이로 실행 취소 레벨의 수를 결정할 수 있는 멀티 레벨 실행 취소와 대조됩니다.
기념품 패턴
기념 패턴을 사용하여 객체의 내부 상태를 저장합니다.상태가 저장되는 객체는 기념물이라고 하며 기념물 생성자를 통해 구성됩니다.실행 취소가 실행되면 상태를 확인할 수 있도록 현재 상태 정보로 초기화된 기념물이 반환됩니다.메모는 발신자에게만 표시됩니다.
기념 패턴에서는 실행 취소 메커니즘을 관리인이라고 합니다.그것은 유물의 보관에 대한 책임이 있지만, 유물의 내용을 변경하지 않는다.undo의 경우, 관리인이 발신자의 기념품을 요청한 후 [14]undo를 적용합니다.
실행 취소 메커니즘의 대부분은 특정 응용 프로그램이나 명령어클래스에 의존하지 않고 구현할 수 있습니다.여기에는 "이력 목록 관리, 이력 스크롤러, 실행 취소 및 재실행 메뉴 항목 및 사용 가능한 [1]다음 명령의 이름에 따라 메뉴 항목 업데이트"가 포함됩니다.
모든 명령어 클래스에는 명령어가 실행되면 호출되는 do 메서드가 있습니다.undo-method는 do-method의 역연산을 구현합니다.그 반대로 실시하려면 , 몇개의 다른 전략이 있습니다.
- 전체 체크 포인트:즉, 명령어를 실행한 후에 완전한 상태가 저장됩니다.이것은 가장 간단한 구현이지만 효율성이 높지 않기 때문에 자주 사용되지 않습니다.
- 재실행 완료:따라서 초기 상태가 저장되고 "초기 상태부터 시작하여 [1]기록 시작부터 모든 명령을 다시 실행"을 통해 기록 목록의 모든 상태에 도달할 수 있습니다.
- 부분 체크 포인트:이것이 가장 많이 사용되는 전략입니다.변경된 응용 프로그램 상태가 저장되고 실행 취소로 상태 일부가 포워드 값으로 다시 설정됩니다.
- 역함수:역함수에는 저장된 상태 정보가 필요하지 않습니다."예를 들어, 이동은 물체를 상대적인 [1]양만큼 뒤로 이동함으로써 역전될 수 있습니다."선택적 실행 취소의 경우 상태를 저장하기 위한 충분한 정보가 없습니다.
「 」를 참조해 주세요.
- 리버서블 컴퓨팅
- 롤백(데이터 관리)
- 삭제 취소
- 버전 관리(네이티브 파일 형식)
레퍼런스
- ^ a b c d e f g h i j k l m n Berlage, Thomas (1994-09-01). "A selective undo mechanism for graphical user interfaces based on command objects". ACM Transactions on Computer-Human Interaction. 1 (3): 269–294. doi:10.1145/196699.196721. ISSN 1073-0516. S2CID 11848679.
- ^ Myers, Brad A.; Kosbie, David S. (1996-04-13). Reusable hierarchical command objects. ACM. pp. 260–267. doi:10.1145/238386.238526. ISBN 0897917774. S2CID 17033810.
- ^ a b c d e f g h Jakubec, Karel; Polák, Marek; Nečaský, Martin; Holubová, Irena (2014). "Undo/Redo Operations in Complex Environments". Procedia Computer Science. 32: 561–570. doi:10.1016/j.procs.2014.05.461. ISSN 1877-0509.
- ^ Moran, Chuktropolis Welling (2013-01-01). Interactive Time (Ph.D.). La Jolla: University of California, San Diego. ISBN 9781303194450.
- ^ Barnet, Belinda (2014-12-01). Memory Machines: The Evolution of Hypertext. Anthem Press. p. 108. ISBN 9781783083442.
But the most popular development for novice users in FRESS was not its capacity to accommodate multiple displays and users; it was the 'undo' feature – the feature of which van Dam is most proud (van Dam 2011). FRESS pioneered a single-level undo for both word processing and hypertext. Every edit to a file was saved in a shadow version of the data structure, which allowed for both an 'autosave' and an undo. Brown staff and students understood immediately the importance and usefulness of this feature (van Dam 1999).
- ^ Barnet, Belinda (2010-01-01). "Crafting the User-Centered Document Interface: The Hypertext Editing System (HES) and the File Retrieval and Editing System (FRESS)". Digital Humanities Quarterly. 4 (1).
- ^ Teitelman, Warren (1972-01-01). "Automated Programmering: The Programmer's Assistant". Proceedings of the December 5–7, 1972, Fall Joint Computer Conference, Part II. AFIPS '72 (Fall, part II). New York, NY, USA: ACM: 917–921. doi:10.1145/1480083.1480119. S2CID 1276566.
- ^ "Bravo Manual in Alto Non-Programmers Guide, p. 52" (PDF). Retrieved 2014-03-29.
- ^ Miller, Lance A.; Thomas, John C. (1977-09-01). "Behavioral issues in the use of interactive systems". International Journal of Man-Machine Studies. 9 (5): 509–536. doi:10.1016/S0020-7373(77)80002-3. ISSN 0020-7373.
- ^ Miller, Lance A.; John C. Thomas Jr. (December 1976). "Behavioral Issues in the Use of Interactive Systems". Archived from the original (PDF) on May 27, 2012. Retrieved 2011-05-21.
- ^ a b c Ben Zimmer (2009-09-15). "The Age of Undoing". New York Times. Retrieved 2013-06-02.
- ^ Apple Computer, Inc. (1984). "User Interface". Inside Macintosh, Volume I.
- ^ 로베르타 만치니, 앨런 딕스, 스테파노 레비알디, 2006년."실행 취소에 대한 반성"
- ^ a b c Design patterns : elements of reusable object-oriented software. Gamma, Erich. Reading, Mass.: Addison-Wesley. 1995. ISBN 0201633612. OCLC 31171684.
{{cite book}}
: CS1 유지보수: 기타 (링크)
외부 링크

- The Age of Undoing - New York Times Magazine의 Undo 언어 역사에 관한 기사.
- 계단식 실행 취소 제어 - 계단식 실행 취소의 내용과 사용자에게 표시되는 방법에 초점을 맞춘 문서