반응형

 

소프트웨어 설계를 하다보면 디자인툴이 필요할때가 있습니다.

저도 설계를 진행하거나 아이디어 도출 단계, 그리고 시나리오 분석할때 UML을 자주 사용하는 편인데요.

UML 툴중에 GUI를 이용한 툴을 많이들 사용할겁니다.

 

저는 Plant UML을 자주 사용하는 편입니다.

 

텍스트로 입력해서 UML을 그려주니까 uml 을 그릴떄 선이나 위치 모양 등에 대해서 좀 신경을 안쓰고 타이핑(텍스트) 되어있는 이름과 플로우를 보면서 코딩되면 어떤 모양일지 생각해보게 되어서 좋은것 같습니다.

 

물론 단점도 있죠.. 텍스트로 입력하다보니 PlantUML 문법을 좀 알아야 하고, 마음에 드는 모양을 만들기가 좀 힘들긴 합니다.

그래서 보고용으로는 좀 별로인듯 한데,  근데 또 이것이 보고용 자료 만들때도 마음은 편해요.

Plant UML로 작성하겠다고 하고 진행하면, 나중에 아웃풋(결과물)에 대해서 "왜 이거 이렇게 그렸어? 모양이 맘에 안드네" 이런 말을 않고 넘어가게 되는 것 같아요... Plant UML은 원래 안되... 지가(프로그램이) 알아서 해줘.. 라는 인식? 때문에 그런듯 합니다.

 

 

아무튼 제가 자주 사용하고 있던 opensource로 운영되는Plant UML 에디터 사이트를 알려드겠습니다.

그리고 간단히 서버를 로컬에서 실행하는 것도 적어보겠습니다.

 

이 사이트가 열악한것인지 네트워크 연결이 안좋은것인지는 모르겠으나 uml을 작성하다 보면 종종 랙이 걸리거나 반응이 느릴때가 있어서 불편해서 로컬에서 사용하기 시작했습니다.

 

PlantUML 

PlantUML 에 대한 문법과 사용 가이드가 있는 사이트 입니다.

https://plantuml.com/ko/

 

간단한 텍스트를 이용하여 멋진 UML 다이어그램을 만들 수 있는 오픈소스 도구입니다.

간단한 텍스트를 이용하여 쉽게 멋진 UML 다이어그램을 만들 수 있으며, 다양한 종류의 다이어그램을 제공하고 있습니다. 또한, 생성된 다이어그램을 PNG, LaTeX, EPS, SVG 와 같은 이미지로 변환할 수

plantuml.com

 

Plant UML 에디터

제가 자주 사용하는 Plant UML 에디터는 여기에 있습니다.

history도 저장이 되어서 간단한 UML을 작성할때 사용합니다.

https://plantuml-editor.kkeisuke.dev/

 

PlantUML Editor

 

plantuml-editor.kkeisuke.dev

 

 

github

https://github.com/kkeisuke/plantuml-editor2

 

GitHub - kkeisuke/plantuml-editor2: PlantUML online demo client / Vue3 in Vite

PlantUML online demo client / Vue3 in Vite. Contribute to kkeisuke/plantuml-editor2 development by creating an account on GitHub.

github.com

github에도 소스코드 받아서 실행하는 법과 docker 이용하는 법이 잘 적혀있습니다.

저는 소스를 받아서 실행해 보려고 했는데 실패 했습니다. 그리고 docker를 이용해서 성공 했고요.

그래서 plantuml editor를 사용하는 것이 목적이라면 docker를 이용하는 방법을 추천 드립니다.

 

 

로컬에서 실행하는 방법 *** 핵심 ***

 

제가 테스트한 환경과 절차를 정리하면 다음과 같습니다.

 

PC: Macbook Air M1 

OS: MacOS

절차 : Docker 설치 -> colima 설치 -> colima 실행 -> docker image download -> docker image 실행

~/github $ brew install docker
~/github $ brew install colima


$colima start 

~/github $ colima start
INFO[0001] starting colima                              
INFO[0001] runtime: docker                              
INFO[0002] creating and starting ...                     context=vm
> Terminal is not available, proceeding without opening an editor
> Starting the instance "colima" with VM driver "qemu"
> QEMU binary "/opt/homebrew/bin/qemu-system-aarch64" seems properly signed with the "com.apple.security.hypervisor" entitlement
INFO[0097] provisioning ...                              context=docker
INFO[0097] starting ...                                  context=docker
INFO[0099] done                  


~/github $ Docker ps -a

///// plant uml 서버 image download
~/github $ docker pull plantuml/plantuml-server:jetty

///// plant uml 서버 실행
~/github $ docker run -d -p 4000:8080 plantuml/plantuml-server:jetty

 

docker desktop 말고 colima로 docker 실행 환경을 만들었고 그리고 나서 plantuml 서버 이미지를 다운로드 하고 실행 했습니다.

 

 

PlantUML 실행 화면

 

 

다들 설계도 잘하는 개발자가 되어 봐요~~

 

## 해피 코딩

 

반응형

  

 

 

안녕하세요 데몬스쿼드 키우기 쿠폰을 쉽게 사용할 수 있도록 만들었습니다.!!

많이 활용해주세요.

 
반응형

저는 dynamodb를 이용하여 간단한 시스템을 구축한 경험이 있었는데요.

DB 사용 비용이 상당히 비싼 것을 보고 좀 놀랐습니다.

 

제가 받은 청구내역은 아래 와 같이 약 5$정도 였는데요.

(실제 서비스 비용은 아니고 서비스전 개발중에 받은 청구서라 서비스시에 얼마가 나올지를 예상하기는 힘들었습니다.)

 

청구 내역 -

Amazon DynamoDB
 
USD 5.32
$0.00 per hour for 25 units of read capacity for a month (free tier)
18,600 ReadCapacityUnit-Hrs
USD 0.00
$0.00 per hour for 25 units of write capacity for a month (free tier)
18,600 WriteCapacityUnit-Hrs
USD 0.00
$0.00014098 per hour for units of read capacity beyond the free tier
6,282 ReadCapacityUnit-Hrs
USD 0.89
$0.0007049 per hour for units of write capacity beyond the free tier
6,282 WriteCapacityUnit-Hrs
USD 4.43

 

 

그런데, 아래 링크를 보면 제 경험에 비해 훨씬 저렴하게 비용이 산정되어있어서 놀랐는데요.

DB선정에 있어서 가격이 전부는 아니지만, 그래도 민감한 부분이기는 하기 때문에 DB를 어떻게 구성해서 사용해야 하는지는, 전문가(?) 면담이 필요한것 같습니다.

Pricing
A wide variety of payment methods exist,
with the smallest database starting
at an upfront $243, or $24.82 monthly for a year.
Dynamo DB's prices vary according to region,
the provided example utilizes the US East (N. Virginia) prices.

Free Tier

  • 25 GB of data storage
  • 2.5 million stream read requests from DynamoDB Streams
  • 1 GB of data transfer out, aggregated across AWS services  

Example Pricing

Applications with 10M reads ($2,5), 1M writes ($1,25),
1 GB ($0,25) and continuous backup ($0,20) $4,20 USD

 

 

링크: https://serverlesstalent.com/compare/amazon-aurora-serverless/dynamodb

 

serverless:talent | Hire to build Serverless-first applications

Hire specialist developers to build full-stack serverless applications | Reduce risks, time & cost to market

serverlesstalent.com

 

 

 

 

 

 

 

     
About Product
Amazon Aurora Serverless is an on-demand, auto-scaling configuration for Amazon Aurora. It automatically starts up, shuts down, and scales capacity up or down based on your application's needs. It enables you to run your database in the cloud without managing any database capacity.

With Aurora Serverless, you simply create a database endpoint, optionally specify the desired database capacity range, and connect your applications. You pay on a per-second basis for the database capacity you use when the database is active, and migrate between standard and serverless configurations with a few clicks in the Amazon RDS Management Console.


Amazon DynamoDB is a key-value and document database that delivers single-digit millisecond performance at any scale. It's a fully managed, multi-region, multi-active, durable database with built-in security, backup and restore, and in-memory caching for internet-scale applications.
DynamoDB differs from other Amazon services by allowing developers to purchase a service based on throughput, rather than storage. If Auto Scaling is enabled, then the database will scale automatically. Additionally, administrators can request throughput changes and DynamoDB will spread the data and traffic over a number of servers using solid-state drives, allowing predictable performance.

Pricing
A wide variety of payment methods exist, with the smallest database starting at an upfront $243, or $24.82 monthly for a year.
Dynamo DB's prices vary according to region, the provided example utilizes the US East (N. Virginia) prices.
Free Tier

  • 25 GB of data storage
  • 2.5 million stream read requests from DynamoDB Streams
  • 1 GB of data transfer out, aggregated across AWS services  

Example Pricing

Applications with 10M reads ($2,5), 1M writes ($1,25), 1 GB ($0,25) and continuous backup ($0,20) $4,20 USD
Performance
Onboarding
Good documentation that includes tutorials.

Scalability
On-demand auto scaling configuration, sharding.

Regions
US, Africa, Asia Pacific, China, South America, Middle East and Europe. The support varies across specific versions of each database engine, and across AWS Regions.

 
Backups 
Aurora backs up your cluster volume automatically and retains restore data for the length of the backup retention period. You can specify a backup retention period, from 1 to 35 days, when you create or modify a DB cluster.  Aurora backups are stored in Amazon S3.

Security
By default, Aurora Serverless v1 uses the Transport Layer Security/Secure Sockets Layer (TLS/SSL) protocol to encrypt communications between clients and your Aurora Serverless v1 DB cluster. It supports TLS/SSL versions 1.0, 1.1, and 1.2.


Onboarding
Rich in documentation, with a great tutorial to start things off.

Scalability
Has automatic scaling as an option.

Regions
United States, Africa, Asia Pacific, Europe, Middle East.

To connect programmatically to an AWS service, you use an endpoint. In addition to the standard AWS endpoints, some AWS services offer FIPS endpoints in selected Regions.

Backups 
Charged separatedly from the project. Has three different options: Continuous backups, on-demand, or restoring a table.

Security
AWS is responsible for protecting the infrastructure that runs AWS services in the AWS Cloud. Includes data protection, identity and access management, infrastructure security, and more.


Technical Details
  • Compatible with MySQL and PostgreSQL
  • High-performance storage subsystem
  • Automates and standardizes database clustering and replication
  • Supports the full breadth of Aurora features, including Global Database, Multi-AZ deployments, and read replicas.
  • Takes advantage of the familiar Amazon Relational Database Service (Amazon RDS) features for management and administration.
Amazon DynamoDB is a NoSQL database that supports key-value and document data models. Developers can use DynamoDB to build modern, serverless applications that can start small and scale globally to support petabytes of data and tens of millions of read and write requests per second.
  • Microsecond latency with DynamoDB Accelerator
  • Automated global replication with global tables
  • Read/write capacity modes
  • On-demand mode
  • ACID transactions
  • Encryption at rest
  • Point-in-time recovery
  • On-demand backup and restore

 

반응형

종종 window 11 이나 회사, 학교, 기관에서 사용하는 PC에 추가기능 관련된 기능이 숨겨져 있는 경우가 있습니다.

이때 추가 기능 설치를 해야 하는경우 난감한데요.

 

appwiz.cpl 을 이용하여 추가 기능을 설치 할 수 있습니다.

 

Cmd, Shell, 또는 명령창을 실행합니다.

Window Key + R 을 눌러서 cmd.exe 를 실행하면 됩니다.

(관리자 권한으로 실행해야 하는 경우도 있음)

> appwiz.cpl

 

이렇게 실행하면, 제어판\모든제어판 항목\프로그램 및 기능 이 실행 됩니다.

Windows 기능 켜기/끄기 항목을 선택

그리고 나서, 필요한 기능을 찾아서 설치 하면 됩니다.

 

 

반응형

1. MediaPipe

https://developers.google.com/mediapipe

 

MediaPipe  |  Google for Developers

An open source, cross-platform, customizable ML solution for live and streaming media.

developers.google.com

On Device AI 를 쉽게 구현하고 다양한 서비스를 만들수 있는 프래임워크입니다.

 

MediaPipe 솔루션은 애플리케이션에 인공 지능(AI) 및 기계 학습(ML) 기술을 신속하게 적용할 수 있는 라이브러리 및 도구 모음을 제공합니다. 이러한 솔루션을 애플리케이션에 즉시 연결하고 필요에 맞게 사용자 정의하며 여러 개발 플랫폼에서 사용할 수 있습니다. MediaPipe 솔루션은 MediaPipe 오픈 소스 프로젝트 의 일부 이므로 애플리케이션 요구 사항에 맞게 솔루션 코드를 추가로 사용자 정의할 수 있습니다. 

 

 

 

 

 

 

 

 

미디어파이프의 데모를 확인해볼 수 있는 좋은 예제가 될 것 같아 링크를 해놓습니다.

 

 

https://makernambo.com/155?category=774191 

반응형

DevOps 란 ?

인터넷 서비스는 서비스 개선을 빠르게 부담 없이 적용 하는것이 매우 중요합니다.

사실 이 부분은 인터넷 서비스 뿐만 아니라, 거의 모든 소프트웨어 분야에서 요구되는 사항이긴 하죠. 

빠르고 완벽하게 되면 뭐든 좋은거니까요. ^o^

 

서비스만 놓고 얘기해보자면, 아래와 같이 몇가지 단계로 구분 해볼 수 있을 것이에요.

기획 -> 개발 -> 테스트 -> 배포 -> 운영

 

DevOps 라는 개념은 이 과정을 단순화 하고 쉽게 할 수 있도록 하는 것인데요, 말 그대로 개발(Dev) 과 운영(Operation)즉,  개발된 S/W를 빠르게 배포하고 운영을 하는 것입니다.

 

DevOps라는 명칭이 사용하게 된 것도 이런 개념을 담은 솔루션들이 나왔기 때문이겠죠....

 

 

관련해서 읽어볼 꺼리들을 링크로 공유 합니다.

 

https://jjeongil.tistory.com/854

 

DevOps : 관련 도구 : 종류, 소개

위 그림은 DevOps 수명 주기 전반의 도구 사슬을 표현하였습니다. 도구 사슬의 의미는 각 영역이 별개가 아니라 도구 간 연계를 통해서 시너지를 이룬다는 측면을 강조한 것입니다. 각 영역별로

jjeongil.tistory.com

 

 

https://tech.ktcloud.com/19

 

협업 프로젝트 관리 1부 - 오픈소스 툴 소개

 개인 vs 팀의 프로젝트 관리 어느 날, 친구에게 교통사고를 당했다는 연락을 받은 나 (다급)괜찮아? 안다쳤어? vs (침착) 보험 들었어? 여러분은 어떻게 반응하시나요? 1000% J형이라 대학생 때부터

tech.ktcloud.com

 

반응형

SW를 개발하기 위해서는 가장 중요한것이 무엇인가??

 

사용자 인터페이스나 비지니스 로직을 다루는 부분이 아닌 핵심 알고리즘이나 프래임워크(Framework) 을 주로 다루는 개발자로서 평소에 사용자의 요구사항부터 사용자 시나리오에서의 Usecase 까지 고려해서 이와 같은 질문을 해볼 기회가 별로 없었습니다.

 

그리고 일반적으로 개발자들은 사용자의 요구사항이나 시나리오보다는 SW 의 구조, 기술적 난이도, coding 방식에 더 관심이 많고 S/W의 중요한 부분도 이 부분에 있다고 생각하죠.

 

"이번에 새로 알게된 기법인데... 적용해봐야지" "잘 구현하면 되지!" "성능을 어떻게 높일까?" "다른 기기에 포팅 해볼까?" 

이런것에 더 흥미를 느끼고 이를 손으로 구현 해 냈을 때 만족을 느낄 겁니다.

저도 개발자이다 보니 당연히 이런것에 더 흥미를 느끼고 재미를 느끼기 때문에 200% 공감하는 바이고요.

 

그렇지만, 프로젝트를 진행하면서 개발자들이 슬픈 상황이 맞이하게 되는 경우가 많은데요.

분명 좋은 아이디어를 찾아내고 구현해서 훌륭한 퍼포먼스를 내는 모듈을 개발했는데, 그리고 누가 봐도 멋지다라고 생각하는데, 기존 대비 훨씬 좋아진 성능에도 불구하고, 프로젝트의 비전이 점점 흐려지고, 성공에 대한 가능성이 낮아지면서, 경쟁 프로젝트들과의 격차가 발생하는 등 개발자가 스스로가 느끼기에도 뭔가 분위기가 안좋아 지는 것입니다.

그리고 나서는 프로젝트는 종료되거나, 성공적으로 런칭해도 시장에서 반응이 싸늘한 경우일 것입니다.

 

저도 여러번의 대형 프로젝트에 소속되어 개발자로 활동 했었고, 실제로 프로젝트는 성공 했었고 회사에서도 큰 수익이 발생했었습니다. 그러나 몇년 후 시스템은 시대에 맞지 않아서 프로젝트는 종료되었고, 신규 프로젝트가 실행되었고 새로운 모듈을 담당하게 되고 개발을 진행했었지만, 이 시스템도 시대의 요구에 부합되는 그런 프로젝트는 아니었는지 상품화 되지 못하고 종료되었습니다.

 

그러나 개발자 입장에서는 "내 모듈에는 크게 문제가 없고 열심히 하면 프로젝트에 이상이 없을것 같은데, 왜 그만 두려고 하지?" 라는 의문이 있었습니다.

 

도대체 뭐가 문제 였을까요? 프로젝트 기획이 좀 잘못되었어, 디자인이 별로야, 에니메이션 요소를 더 많이 사용했어야 하는데 UX가 첨에는 세련되 보이지만 오래 사용하다보면 질려, 성능이 너무 안나와, 안정성이 너무 떨어져서...

다양한 이유를 말할 수 있겠지요.

 

그런데 진짜 원인은 무엇이었다 라고 자신있게 말할 수 있는 사람이 있을까요? 

 

프로젝트의 성공을 바라는 관점에서 

 

개발을 오래 하다보면 나름의 인사이트가 생긴다. 프로젝트의 난이도라든가, 시대에 부합하는지, 기술적으로 경쟁력이 있는지 등등은 그냥 감으로 느껴집니다.

 

그리고 다른 팀의 팀원들과도 (한회사에서 오래 다니다 보면, 한팀에 있다가 쪼개지고, 다시 합쳐지고 해서 친한 사람이 많아진다.) 커피한잔 하면서 얘기하다보면, 어떻게 흘러가는지 감이 옵니다.

 

그러면서 드는 생각들이 "아.. 왜 이걸 이렇게 진행하지..?? 이게 경쟁력이 있다고 생각하나?" 라는 생각부터 해서 "나라면 이렇게 하겠다." 그리고 나서는 조금 깊게 생각하려고 하다가 머리속에서 분명 명확하다고 생각했던 해답이 없어지고, "아.. 그냥 시키는대로 개발 해야지.. 복잡해.." 라고 하는 개발자 전형의 루틴으로 하루를 보내고 퇴근하게 되죠.

 

한번 생각해보자.!! 프로젝트를 성공 시키기 위해서는 도대체 뭐가 필요한걸까?

시대를 앞서가는 비전? 사용자들이 감동할만한 UI? 빠른 성능? 대박을 터트릴 수 있는 수익 모델?

기술적 선도할 수 있는 AI 기술? 

 

프로젝트는 과연 어떻게 해야 성공할 수 있을까? 

그냥 복불복 인가?? 하늘에 맡기면 되는가?

 

자신이 진행하고 있는 프로젝트를 제외하고 "프로젝트" 라는 단어를 떠올리면, 대부분 이런 생각이 들곤한다.

"세상에 없던 어떤것? 갑자기 멋진 아이디어가 떠올라서 뭔가 열씸히 코딩해서 짠.. 하고 나타나는것..."

회사에서 스트레스 받아가면서 프로젝트를 진행하면서도 이런 생각이 떠오른다는게 신기하죠.

 

프로젝트는 어떻게 시작 될까?

갑자기 개발자가 멋진 아이디어를 짠 하고 생각했다고 해서 프로젝트가 진행될 수 있을까요?

 

우리 모습을 살펴보면 아마 이런 모습일겁니다.

어느날 팀장이 개발 회의 시간에 "QR code를 인식하는 기능이 필요한데, 얼마나 걸릴까요?" 라고 물어볼겁니다.

흠...  과연 누가 기능이 필요하다고 했을까요?

 

아마 프로젝트를 기획 하는사람이 팀장이랑 얘기하다가 필요한 기능이 나왔을 겁니다.

기획하는 사람이랑 무슨 얘기를 했길래 그런 기능이 나왔을까요? "제품에 대한 상세 정보나 가격 정보를 보여주고 싶은데 어떻게 하면 좋을지 아이디어가 있을까요?" 같은 질문이 회의상에서 나왔겠죠.

그러면 참여자들은 여러 아이디어를 얘기하다 NFC, QR code, Bar code, 카메라로 제품 인식을 자동으로 하는 기능 등 다양한 얘기가 나왔다가 결국 QR code 로 정해졌겠죠.

 

그러면 제품에 대한 상세 정보를 보여주고 싶다고 하는 요청은 어디서 나왔을까요? 

어디선가 나왔겠죠... 기획 하는 사람이 아이디어를 냈을 수도 있지만, 기획 하는 사람에게 뭔가를 요청한 누군가가 있겠죠?? 

 

중고차량 매매 회사 사장님이 요청 했습니다.

"우리 중고차 매매회사에서는 온라인 서비스를 하고 싶어요.

어떤 사람이 지나가는 차를 보고 누군가가 와... 저차 멋지네, 가격 얼마지?? 이런 생각을 했을때 핸드폰으로 가격이나 스팩 정보를 쉽게 찾아 볼수 있도록 했으면 좋겠네요." 

 

라고 얘기 했다고 하네요. (가상입니다.)

 

그럼 다시 돌아가서,

이 요구사항을 가지고 기획 하는 사람이 중고 차량 정보를 확인할수 있는 기술적인 방법이 있는지 개발 팀장과 얘기 했습니다.

개발 팀장은 아이디어중 구현이 용이한 방법(QR 코드)을 찾았고, 기획자와 논의 했습니다.

그리고 개발팀에서 해당 기능을 개발 진행하기로 한것입니다.

 

어떤 생각이 드시나요. 얼핏 들으면 말이 되는것 처럼 보이는데 구멍이 숭숭숭 뚫려있죠?

QR code는 어디에 붙어있어야 할까요? 과연 성공적인 온라인 서비스가 될 수 있을까요?

 

만약 이 요구사항을 듣고, 제대로 된 논의 과정을 거쳤다고 한다면 다음과 같이 논의 되지 않았을까요?

 

개발자: 처음에 들었을때는  QR코드로 특정 제품 정보를 보여주는거로 알았는데, 지금 요구사항을 들어보니까. 이건 QR코드로 할게 아닌데요?

기획자: 다른 기술적인 내용은 잘 몰라서 그러는데 어떤 방법이 더 있을 까요?

개발자: 일단 기술적인 난이도를 떠나서 얘기해보자면, 카메라로 바로 해당 차를 찍어서 link가 뜨게 만들어야 될것 같아요. 남에 차에 QR코드가 있을 리가 없잖아요.

기획자: 그게 가능하면 그렇게 하면 좋겠네요.

개발자: 근데 이거 영상인식인데.... 기능이 엄청 어려울것 같아요. 영상인식쪽 잘 아는 개발자가 더 필요할것 같아요.

 

그럼 영상인식으로 기능이 들어가면 될까요?

여기서도 더 고민 해봐야 할 부분들이 있습니다.

일반 사용자는 과연 이 어플리케이션을 기본 카메라로 사용할까요?

그리고 저 차 얼마지? 라고 생각하고 해당 어플리케이션을 실행하고 사진 찍고 하는 수고를 할까요?

글쎄요. 좋은 기능이긴 하지만, 제 생각에는 이 기능으로는 고객을 만족 시킬 수 없을 것 같네요. 여러분의 생각은 어떤가요?

이런 의견이 있을 수 있겠죠.

"그냥 카메라로 사진을 찍고, 해당 앱에서 갤러리의 사진을 읽어서 찾아주면 되지 않을까?" 이런 의견요.

 

그런데 좀 근본적인 고민을 해봅시다.

이 서비스의 핵심은 뭔가요?

중고차 사장님이 얘기한 내용의 핵심이 카메라로 지나가는 차를 검색하는 것이 아니라, 본인 화사가 가지고 있는 중고 차량의 가격, 사고 이력, 연식, 등등의 정보를 한눈에 살펴볼 수 있게 해주고 고객이 쉽게 선택할 수 있게 하는 부분입니다.

카메라를 활용하는 부분은 시스템(어플리케이션)의 일부 기능이죠.

 

만약 그렇다고 한다면, 

영상인식/이미지 인식(AI)에 구현할 수 있는AI 개발자 채용와 학습데이타 수집 비용, 개발시간등 많은 리소스를 보조적인 기능에 투자하는 것이 됩니다.

 

올바른 요구사항을 뽑기 위해서 프로젝트의 고객과 고객의 요구사항에 대해서 진지하게 논의 해보고 원하는 목표가 무엇인지를 그리고 우선순위가 무엇인지를  다시 고민했어야 할 것입니다.

 

고객님이 TV나 유투브 같은데서 카메라로 뭔가를 인식하고 하는것에 꽃혀서(좋은 말로 감명 받아서) 이 기능을 언급 했다고 하더라도, S/W를 개발하는 기획자, 개발자 입장에서는 요구사항에 대해서 진지하게 목적이 무엇인지 해당 기능으로 무엇을 하고 싶은지를 진지하게 고민하고 의견을 교환 했어야 한다고 생각되죠? 

 

"우리 중고차 매매회사에서는 온라인 서비스를 하고 싶어요.

어떤 사람이 지나가는 차를 보고 누군가가 와... 저차 멋지네, 가격 얼마지?? 이런 생각을 했을때 핸드폰으로 가격이나 스팩 정보를 쉽게 찾아 볼수 있도록 했으면 좋겠네요." 

=> 고객님의 중고매장에서 소유하고 있는 멋진차를 핸드폰에서 쉽게 가격과 스팩을 확인하여 구매할 수 있도록 하는 중고차 정보를 제공하는 어플리케이션을 먼저 개발 하는 것이 좋겠습니다.

그리고 카메라를 이용한 차량정보를 확인하는 기능은 사실 AI 분야이고 비용과 시간이 많이 발생하게 됩니다. 

이 부분은 어플리케이션 개발후 다시 논의 해보는 것이 어떨까요? 

 

 

프로젝트를 성공하기 위한 조건

프로젝트 성공이란 프로젝트의 진정한 목적을 찾고 그 목적을 제대로 수용하여 고객이 만족 할 수 있도록 하는것입니다. 단순하게 고객이 얘기한 내용을 그대로 반영한다고 해서 성공 하는 것이 아닙니다.

고객이 요구한데로 어플리케이션이 구현 되었다 하더라도, 고객은 분명 마음속으로

"어.. 카메라 부터 뜨네? 우리 회사 차량 정보는 어디서 봐?"

"음.. 이게 아니었는데.. 아.. 내가 생각했던거랑 달라"

라는 의문을 갖을 수 있습니다.

 

고객은 분명 기능을 통해서 서비스의 성공적인 모습을 머리속으로 그렸을 것입니다.

여기서 중요한 것은 "기능" 이 아니라 "서비스의 성공적인 모습", 요구공학에서 얘기하는 비지니스 골, 달성하고자 하는 목표 입니다.

 

달성하고자 하는 목표(비지니스 골) 이 중요한 것이지 기능은 고객이 제시한 기능이든 아니든 사실상 상관이 없습니다.

위 상황에 빗대어 얘기해보면, 모바일 어플리케이션에서 고객들이 쉽게 원하는 차를 고르고 구매할수 있도록 하는것이지, 카메라나 영상인식 이 중요한 것은 아니라는 의미입니다.

 

집중해야 할것을 찾는 것!

 

요즘처럼 어플리케이션들이 넘처나는 시대에 다른 어플리케이션과의 차이을 보여줄 수 있는 기능은 참 매력적입니다.

하지만 그게 다는 아니라는 것!!!

 

마무리

특정분야로 이야기를 좁히지 않고, 좀더 공감이 될 수 있을것 같아서 온라인 서비스를 예로 들어봤습니다.

(요즘은 Offline 시장을 Online으로 옮기는게 대새???  ^^)

트렌드에 뒤쳐지지 않기 위해서 온라인 서비스를 가지고 이야기를 해봤습니다.

 

!!해피코딩!!

반응형

 

 

public class SimulatorView extends View{

TimerTask timerTask = new TimerTask(){
        int frame = 0;
        @Override
        public void run() {
//            sim.grow();
            frame++;
            if(frame > 100) {
                invalidate();
                frame = 0;
            }
        }
    };

:

  public void start(){

    timer = new Timer();
    timer.schedule(timerTask,0, 20);
  }
}

'개발 Note > Codes' 카테고리의 다른 글

Singleton class 설계  (0) 2020.10.07
C++ object 관리를 위한 ObjectRef 구조 설계  (0) 2015.06.26
sorting algorithms  (0) 2014.02.26
c++ while 문 - 잘 안쓰는 표현  (0) 2013.10.23
UML2 Sementics  (0) 2012.01.11

+ Recent posts