최종 사용자 개발
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
최종 사용자 개발은 비전문 소프트웨어 개발자가 소프트웨어 시스템을 사용하여 소프트웨어 아티팩트를 생성, 수정 또는 확장할 수 있도록 하는 방법, 기술 및 도구의 집합이다. 여기에는 애니메이션 스크립트, 구성 파일, 게임 모드, 스프레드시트 모델 등 다양한 예시가 있으며, 로우 코드 개발 플랫폼을 통해 프로그래밍 작업 없이 애플리케이션을 개발할 수도 있다. 최종 사용자 개발은 정보 시스템 활동의 출력, 입력, 처리, 저장, 통제에 초점을 맞추며, 비용-편익 모델을 통해 기술 비용, 학습 비용, 개발 비용 등을 고려한다. 협업을 통해 전문 개발자와 최종 사용자 개발자, 또는 최종 사용자 개발자 간의 상호 작용이 이루어지며, 온라인 및 오프라인 커뮤니티를 통해 지식 공유와 사회적 지원이 제공된다. 비판적인 시각에서는 보안 및 품질 문제를 제기하며, 최종 사용자 소프트웨어 엔지니어링 연구를 통해 이러한 문제를 해결하려는 노력이 이루어지고 있다.
더 읽어볼만한 페이지
- 소프트웨어 기능 - 이스터 에그
이스터 에그는 소프트웨어, 비디오 게임, 영화 등 다양한 매체에 숨겨진 메시지나 기능을 의미하며, 개발자들이 재미를 더하거나 개성을 드러내기 위해 활용하는 요소로, 칩 아트나 펌웨어 등 다양한 형태로 나타나 소프트웨어 보안 문제와 관련된 논쟁의 대상이 되기도 한다. - 소프트웨어 기능 - 윈도우 7의 새로운 기능
윈도우 7은 윈도우 비스타의 사용자 인터페이스를 개선하고 다양한 새로운 기능을 추가하여 데스크톱 슬라이드쇼, 테마 팩 지원, 가젯 개선, 윈도우 탐색기 라이브러리 기능, 시작 메뉴 및 작업 표시줄 개선, 멀티 터치 지원, DirectX 11 지원 등을 제공한다. - 소프트웨어 설계 - 구조적 분석
구조적 분석은 1960년대에서 1980년대 소프트웨어 개발의 복잡성을 해결하기 위해 개발된 기법으로, 다이어그램과 데이터 사전을 활용하여 시스템을 분석하고 설계했으며, 객체 지향 프로그래밍의 등장으로 활용도가 감소했다. - 소프트웨어 설계 - 지속적 배포
지속적 배포(CD)는 소프트웨어 릴리스 프로세스를 자동화하는 접근 방식이며, 배포 파이프라인을 통해 구현되고 시장 출시 시간 단축, 제품 품질 향상 등의 이점을 제공하지만 테스트 자동화 부족 등의 과제도 존재한다. - 컴퓨터 프로그래밍 - 순서도
순서도는 컴퓨터 알고리즘이나 프로세스를 시각적으로 표현하는 도구로, 흐름 공정 차트에서 기원하여 컴퓨터 프로그래밍 분야에서 알고리즘을 설명하는 데 사용되며, 다양한 종류와 소프트웨어 도구가 존재한다. - 컴퓨터 프로그래밍 - 의사코드
의사코드는 컴퓨터 과학 및 수치 계산 분야에서 알고리즘을 설명하기 위해 사용되는 비표준적인 언어로, 자연어와 프로그래밍 언어의 요소를 혼합하여 알고리즘의 논리적 흐름을 이해하기 쉽게 하고 프로그래머가 실제 코드로 구현하기 전에 알고리즘을 설계하고 검토하는 데 유용하다.
최종 사용자 개발 |
---|
2. 정의
Lieberman 외는 최종 사용자 개발을 다음과 같이 정의한다.[12]
다음은 최종 사용자 개발의 예시이다.
> 최종 사용자 개발은 비전문 소프트웨어 개발자 역할을 하는 소프트웨어 시스템 사용자가 어떤 시점에서 소프트웨어 아티팩트를 생성, 수정 또는 확장할 수 있도록 하는 일련의 방법, 기술 및 도구이다.
Ko 외는 최종 사용자 프로그래밍을 다음과 같이 정의한다.[13]
> 최종 사용자 프로그래밍은 주로 개인적인 용도로, 공개적인 사용보다는 프로그램의 결과를 달성하기 위한 프로그래밍이다.
최종 사용자가 정의한 아티팩트는 데이터베이스 요청 또는 문법 규칙과 같은 자동화된 동작 또는 제어 시퀀스를 설명하는 객체일 수 있다.[14] 이는 시연 프로그래밍, 예시를 통한 프로그래밍, 비주얼 프로그래밍, 또는 매크로 생성과 같은 프로그래밍 패러다임으로 설명할 수 있다.[15] 또한 애플리케이션의 미리 정의된 대체 동작을 선택하는 매개변수일 수도 있다.[16] 최종 사용자 개발의 다른 아티팩트는 주석과 같이 사용자가 생성한 콘텐츠의 생성과 관련될 수도 있으며, 이는 계산적으로 해석 가능할 수도 있고 그렇지 않을 수도 있다(예: 관련 자동화된 기능으로 처리될 수 있음).[17]
3. 최종 사용자 개발의 예시
4. 로우 코드 개발 플랫폼
로우 코드 개발 플랫폼은 기존 프로그래밍이 거의 필요하지 않은 최종 사용자용 솔루션이다. 현재 약 40개의 공급업체가 이러한 플랫폼을 제공하며, 계약 관리, 고객 관계 관리, 문제 및 버그 추적 등 비교적 좁은 기능에 기반을 두고 있다.[11] 이러한 플랫폼은 웹 기반 상호 작용을 통해 사용자가 40~80시간 만에 애플리케이션을 개발할 수 있도록 돕는다.
5. 정보시스템 활동의 초점
최종 사용자 개발은 아래에 나열된 기초적인 정보시스템 활동에 초점을 맞추어야 한다.[37]
- 출력: 어떤 정보가 필요하며, 어떤 형식으로 정보를 표현해야 하는가?
- 입력: 어떤 원천으로부터 어떤 데이터가 가용한가? 어떤 형식인가?
- 처리: 가용한 입력을 원하는 출력으로 변환하는 데 요구되는 작업 혹은 변환 과정은 무엇인가? 어떤 소프트웨어가 이를 가장 잘 처리할 수 있는가?
- 저장: 애플리케이션이 미리 정의된 데이터를 사용하는가? 향후 신 시스템과 여타 애플리케이션에서 사용할 새로운 데이터와 데이터베이스를 정의해야 하는가?
- 통제: 애플리케이션에서 사용하는 데이터의 접근 통제가 필요한가? 불의의 사고나 손상에 대비하기 위한 통제가 필요한가?
6. 비용-편익 모델링
서트클리프에 따르면,[23] 최종 사용자 개발(EUD)은 본질적으로 개발 노력을 최종 사용자에게 아웃소싱하는 것이다. 최종 사용자 개발 도구를 배우는 데에는 항상 어느 정도의 노력이 필요하다. 따라서 사용자가 해당 도구를 통해 업무를 효율적으로 만들고, 업무 시간을 절약하며, 생산성을 높여줄 것이라는 확신을 갖는 것이 중요하다. 이 모델에서, 사용자가 얻는 이점은 초기에 마케팅, 시연 및 입소문에 근거한다. 기술이 실제로 사용되면, 실제 이점에 대한 경험이 주요 동기 부여 요인이 된다.
이 연구에서는 비용을 다음과 같이 정의한다.
- 기술 비용: 기술의 가격과 설치에 드는 노력
- 학습 비용: 기술을 이해하는 데 걸리는 시간
- 개발 비용: 기술을 사용하여 애플리케이션을 개발하는 데 드는 노력
- 테스트 및 디버깅 비용: 시스템을 검증하는 데 걸리는 시간
처음 두 가지 비용(기술 비용, 학습 비용)은 기술 획득 시 한 번 발생하고, 나머지 두 비용(개발 비용, 테스트 및 디버깅 비용)은 애플리케이션을 개발할 때마다 발생한다. 이점(인식되거나 실제적일 수 있음)은 다음과 같다.
- 기술이 제공하는 기능
- 새로운 요구 사항에 대응하는 유연성
- 생산된 애플리케이션의 사용성
- 생산된 애플리케이션의 전반적인 품질
7. 협업
많은 최종 사용자 개발 활동은 협업적인 성격을 띠며, 여기에는 전문 개발자와 최종 사용자 개발자 간의 협업 및 최종 사용자 개발자 간의 협업이 포함된다.
상호 개발[24]은 전문 개발자와 최종 사용자 개발자가 소프트웨어 솔루션을 만드는 데 함께 작업하는 기술이다. 상호 개발에서 전문 개발자는 종종 시스템을 "과소 설계"하고 "문제의 소유자[25]"가 사용 시간에 자신의 필요, 목표 및 상황적 맥락에 적합한 솔루션을 만들 수 있도록 도구를 제공한다.[26] 그런 다음 전문 개발자와 최종 사용자 개발자 간의 의사 소통은 종종 최종 사용자의 즉흥적인 수정을 소프트웨어 아티팩트로 공식화하여 최종 사용자 개발 솔루션을 지역 솔루션을 넘어선 영향을 미치는 상업적 제품 기능으로 변환하는 것을 자극할 수 있다.
이러한 협업에서 소프트웨어 셰이핑 워크숍(Software Shaping Workshop)[27]과 같은 다양한 접근 방식이 전문 개발자와 최종 사용자 개발자 간의 의사 소통 격차를 해소하기 위해 제안되었다. 이러한 접근 방식은 종종 사회적 반투명성 모델[28]에 따라 반투명성을 제공하여 협업에 참여한 모든 사람이 다른 사람이 변경한 사항을 인식하고 인식 때문에 자신의 행동에 책임을 질 수 있도록 한다.
가파른 학습 곡선으로 인해 주로 전문 개발자가 사용하는 GitHub과 같은 프로그래밍 협업 플랫폼 외에도, 최종 사용자 개발자 간의 협업은 소프트웨어 아티팩트가 공유되는 위키 플랫폼에서 자주 이루어진다. 최종 사용자 개발은 또한 "사용 방법" 지식을 공유하기 위한 자동화 스크립트 또는 대화형 튜토리얼을 만드는 데 자주 사용된다. 이러한 애플리케이션의 예로는 CoScripter[29] 및 HILC[30]가 있다. 이러한 애플리케이션에서 사용자는 의사 자연어를 사용하거나 시연을 통한 프로그래밍을 통해 작업용 스크립트를 만들 수 있다. 사용자는 스크립트를 위키 스타일의 스크립트 저장소에 업로드하도록 선택할 수 있다. 이 위키에서 사용자는 사용 가능한 스크립트를 찾아보고 추가 매개변수를 지원하고, 추가 조건을 처리하거나, 추가 개체에서 작동하도록 기존 스크립트를 확장할 수 있다.
최종 사용자 개발자의 온라인 및 오프라인 커뮤니티도 형성되어 최종 사용자 개발자가 공유된 관심사 또는 상호 이익을 위해 EUD 문제를 협업적으로 해결할 수 있다. 이러한 커뮤니티에서 지역 전문가는 전문 지식과 조언을 전파한다. 커뮤니티 구성원은 또한 소프트웨어의 협업적 구성을 지원하기 위해 서로 사회적 지원을 제공한다.[31]
8. 비판
비평가들은 최종 사용자가 애플리케이션을 테스트하고 보호하는 방법을 이해하지 못한다는 점을 우려해 왔다.[32] 포틀랜드 주립 대학교의 컴퓨터 과학 교수인 워렌 해리슨은 다음과 같이 썼다.[32]
> 코딩 전에 지정, 체계적인 테스트 등 일반적으로 통용되는 우수 사례에 대한 지식이 거의 또는 전혀 없이 작성된 소프트웨어 애플리케이션의 대다수에서 보안을 기대할 수 있다는 것은 상상하기 어렵습니다... "X for Complete Idiots"(여기서 "X"는 선호하는 프로그래밍 언어) 책이 얼마나 많이 나와 있습니까? 처음에는 이러한 경향이 재미있었지만, 최근에는 이러한 아마추어들이 새로 얻은 지식을 어디에 적용하는지 생각하면 불안해집니다.
이러한 관점은 모든 최종 사용자가 소프트웨어를 이해하는 데 있어서 동일하게 순진하다고 가정하지만, 플리스킨과 쇼발은 정교한 최종 사용자가 최종 사용자 개발을 할 수 있다고 주장하며 그렇지 않다고 주장한다.[33] 그러나 전문 프로그래머와 비교했을 때, 최종 사용자 프로그래머는 체계적이고 규율 있는 소프트웨어 엔지니어링 활동에 시간이나 관심이 거의 없으며,[34] 이는 최종 사용자 개발로 생성된 소프트웨어 결과물의 품질을 보장하는 것을 특히 어렵게 만든다.
이에 대한 대응으로 '''최종 사용자 소프트웨어 엔지니어링''' 연구가 등장했다. 이는 최종 사용자 개발을 넘어 최종 사용자가 솔루션을 개발할 때 재사용성, 보안 및 검증 가능성과 같은 문제를 고려하도록 동기를 부여받는 문제에 관한 것이다.[35]
또 다른 시나리오는 최종 사용자 또는 컨설턴트가 성능과 확장성을 희생하면서 엄격한 비즈니스 및 보안 규칙을 지원하는 선언적 프로그래밍 도구를 사용하는 것이다. 최종 사용자 개발(EUD)를 사용하여 생성된 도구는 일반적으로 전문 프로그래밍 환경으로 생성된 도구보다 효율성이 떨어진다. 기능과 효율성을 분리하는 것은 유효한 관심사 분리이지만, 최종 사용자가 요구 사항 분석 및 도구의 소프트웨어 프로토타입을 비즈니스 분석가의 참여 없이 완료하고 문서화하는 상황으로 이어질 수 있다. 따라서 사용자는 이러한 전문가가 특정 응용 소프트웨어 또는 소프트웨어 프레임워크의 제한 사항을 고려할 기회를 갖기 전에 필요한 기능을 정의한다. 이러한 최종 사용자 주도 계획에 대한 최고 경영진의 지원은 기존 또는 잠재적인 벤더 종속에 대한 그들의 태도에 달려 있다.
참조
[1]
서적
2005 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC'05)
2005-09-01
[2]
논문
Translating keyword commands into executable code
https://web.archive.[...]
ACM
[3]
논문
Should we leverage natural-language knowledge? An analysis of user errors in a natural-language-style programming language
http://www.cc.gatech[...]
ACM
[4]
서적
End-User Development
http://www.interacti[...]
Interaction-Design.org
2024-01-01
[5]
웹사이트
Empowering Users to Create Their Own Software
http://www.uxmatters[...]
2009-08-03
[6]
서적
Wiley Encyclopedia of Computer Science and Engineering
[7]
간행물
Spreadsheet accuracy theory
http://www.pucrs.br/[...]
2001
[8]
간행물
Estimating the Numbers of End Users and End User Programmers
http://web.engr.oreg[...]
2005
[9]
간행물
End User Development: Survey of an Emerging Field for Empowering People
http://www.hindawi.c[...]
2013
[10]
간행물
Personalization of Context-dependent Applications through Trigger-Action Rules
https://dl.acm.org/f[...]
ACM Transactions on Computer-Human Interaction
2017-04-01
[11]
문서
Low-code development platforms
[12]
서적
End-User Development: An Emerging Paradigm
Springer Netherlands
2006
[13]
학술지
The State of the Art in End-user Software Engineering
2011-04-01
[14]
논문
Grammex: Defining grammars by example
ACM Press
1998-04-01
[15]
서적
End-user development: the software shaping workshop approach
https://www.research[...]
Kluwer Academic Publishers, Dordrecht, The Netherlands
2004
[16]
학술발표
Domain -Expert Users and their Needs of Software Development"
https://hal.archives[...]
2003-06-22
[17]
학술발표
End-User Development and Meta-Design: Foundations for Cultures of Participation
http://citeseerx.ist[...]
2009
[18]
서적
CHI '12 Extended Abstracts on Human Factors in Computing Systems
2012
[19]
서적
Proceedings of the 2019 CHI Conference on Human Factors in Computing Systems
2019
[20]
서적
2014 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC)
2014-07-01
[21]
뉴스
Circuit Design with Lotus 1-2-3
https://archive.org/[...]
BYTE
1985-01-01
[22]
서적
Wisdom-aware computing: on the interactive recommendation of composition knowledge
https://archive.org/[...]
[23]
학술지
Evaluating the costs and benefits of end-user development
2005-07-01
[24]
서적
End-User Development
2009-03-02
[25]
서적
User-Centred Requirements for Software Engineering Environments
Springer, Berlin, Heidelberg
1994-01-01
[26]
서적
End User Development
https://archive.org/[...]
Springer Netherlands
2006-01-01
[27]
서적
End User Development
https://archive.org/[...]
Springer Netherlands
2006-01-01
[28]
학술지
Social Translucence: An Approach to Designing Systems That Support Social Processes
2000-03-01
[29]
서적
Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
ACM
2008-01-01
[30]
서적
Proceedings of the 22nd International Conference on Intelligent User Interfaces
ACM
2017-01-01
[31]
학술지
Meta-design: A Manifesto for End-user Development
2004-09-01
[32]
학술지
The Dangers of End-User Programming
2004-07-01
[33]
학술지
End-user prototyping: sophisticated users supporting system development
[34]
서적
Proceedings of the 4th international workshop on End-user software engineering
ACM
2008-01-01
[35]
웹사이트
End-User Software Engineering: Empirical Findings
http://eusesconsorti[...]
End Users Shaping Effective Software Consortium
2008-05-28
[36]
서적
Management Information Systems 12/E: Managing the Digital Firm
Pearson Education Asia
[37]
서적
e비즈니스 시대의 경영정보시스템 P.237
한경사
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com