[소프트웨어공학] Cohesion(응집도)란?
·
공부/소프트웨어공학
모듈 안에 있는 기능들이 하는 일이 얼마나 연관되었는가를 보는 정도다. Cohesion은 특징에 따라 7단계로 나눌 수 있는데 간단히 알아보자. 1️⃣ Functional Cohesion 모듈 내 기능이 하나의 기능을 하는 상태다. 모듈의 일부 코드를 삭제하면 모듈 자체가 작동하지 않는다. *Black box 코드가 어떤 방식으로 짜여졌는지 몰라도 모듈을 그대로 사용할 수 있다. 2️⃣ Sequential Cohesion 한 모듈 안에 여러 기능이 있고 각 기능은 데이터로 연관되어 있다. 기능은 순서대로 진행된다. 3️⃣ Communicational Cohesion 각 기능은 다른 일을 수행하지만 동일한 input data를 사용한다. 4️⃣ Procedural Cohesion 다른 업무를 수행하는 기능..
[소프트웨어공학] Lean Startup이란
·
공부/소프트웨어공학
많은 startup의 가장 큰 문제는 고객이 원하지 않는 제품을 만드는 것이다. 고객이 원치 않는 제품을 만들면 당연히 고객은 제품을 구매하지 않을 것이고 사업은 성공할 수 없다. 사업에 성공하기 위해서는? 고객이 원하는 제품을 만들면 된다. 제품을 만드는 과정에서 끊임없이 생산품을 만들고 고객의 피드백을 수용하며 계속 방향을 전환하고 결국 고객이 원하는 제품을 만들어내는 방식을 Lean Startup이라 한다. 실제로 dropbox는 만들어진 제품 없이 자신들의 사업 계획을 소개하는 것만으로 사업을 시작했다. 기능적으로 동작하는 제품을 만들라는 게 아니다. 고객의 반응을 보고 사업을 진행해라. 아이디어의 핵심만 구현하여 고객의 피드백만 받을만큼 최소한의 기능만을 하는 제품을 MVP(Minimum Via..
[안드로이드스튜디오] Run 'app'에서 무언가 알 수 없는 이유로 멈췄다?
·
공부/기타
Run 'app'을 눌러도 말을 듣지 않고... 실행도 되지 않고... 새로운 에뮬레이터를 띄워도 똑같이 바보가 된 것 같다면? 에뮬레이터에 전에 있던 데이터가 있어서 바보가 됐을 가능성이 크다. 데이터를 싸그리 지우고 다시 하면 정상 작동.
[운영체제] PID, PPID 확인하기 (ps -eal)
·
공부/운영체제
✅ PID 프로세스 번호를 PID라 한다. 커널이 프로세스를 실행할 때 고유한 프로세스 번호라는 것을 할당한다. 프로세스는 이 번호를 통해 식별되며 0 또는 양의 정수만 PID가 될 수 있다. ✅ PPID 부모 프로세스 번호를 PPID라 한다. 최상위 프로세스를 제외한 모든 프로세스는 반드시 다른 프로세스에 의해 생성되며 생성된 프로세스가 자식 프로세스, 생성한 프로세스가 부모 프로세스가 된다. 이 부모 프로세스의 번호가 PPID다. 리눅스 환경에서 PID와 PPID를 받아오는 프로그램을 작성했다. ps -eal 을 통해 값을 얻을 수 있다. 빨간 네모에 들어간 부분이 내가 원하는 프로세스의 PID와 PPID이다. 프로그램 실행으로 얻은 PID 값과 ps로 얻은 PID 값이 달라 헷갈렸는데 생각해보니 이..
[소프트웨어공학] 테스팅 환경 (E2E, Integration, Unit)
·
공부/소프트웨어공학
배포하는 프로그램 등을 테스트하는 방법 3가지다. ✅ Unit Testing 각 컴포넌트가 정상 동작하는지를 테스트한다. class, function 등이 유닛이 될 수 있다. ✅ Integration Testing 일반적으로 컴포넌트와 컴포넌트를 통합하여 실시하는 테스트를 의미, 시스템이 외부 환경과 통합이 문제 없는지를 테스트하는 의존성 테스트를 의미하기도 한다. ✅ E2E Testing End-to-End Testing. 끝판왕 테스트다. 최종 사용자의 관점에서 하는 테스팅이다.
[소프트웨어공학] scrum이란...!
·
공부/소프트웨어공학
애자일 방법론에는 종류가 많다. Kanban, Feature-driven development 등등. 애자일하게 일하기 위한 방법들이다. 이중 scrum에 대해 알아보자. scrum팀에는 세가지 역할이 있다. 1️⃣ Product Owner 고객이 원하는 바를 파악하고 이를 제품에 반영한다. 제품의 vision을 설정하고 고객이 가장 가치 있는 제품을 빠르게 전달받을 수 있도록 우선 순위를 매기고 수정한다. 고객의 피드백과 needs를 제품에 반영한다. Product Backlog를 전반적으로 관리한다. 2️⃣ Scrum Master scurm에 대해 사람들이 이해하고 수행하는가를 책임진다. 팀이 scrum 규칙, 이론, 실천을 잘 따르고 있는가를 보장해야 한다. servant-leader 3️⃣ Tea..
[데이터베이스] SQL 에러 상태: 실패 -테스트 실패: Listener refused the connection with the following error:ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
·
공부/데이터베이스
상태: 실패 -테스트 실패: Listener refused the connection with the following error: ORA-12505, TNS:listener does not currently know of SID given in connect descriptor... 새로운 데이터베이스를 만드려는데 이런 에러가 나온다. 정상 접속되지 않는다...! 작업 관리자->서비스를 확인해봐도 oracle은 실행 중이었고 다운받은 파일에 문제가 있지도 않았다. 다른 원인을 찾아봐도 문제가 없었다... ✅ 원인은 포트 번호가 잘못된 것... 기본 포트 1521로 하면 위 에러가 나오고 1522로 하니 정상 작동
[소프트웨어공학] DevOps란 / 배포전략
·
공부/소프트웨어공학
데브옵스... 이게 무엇이냐... Development + Operations = DevOps! 다시 말해 개발과 운용을 합친 방법론이다. 기존의 silo 방식(곡물 저장소처럼 큰 벽으로 막힌 것처럼 팀이 서로 벽을 치고 일하는 상황)으로 일하는 환경에서는 빠르게 변하는 운용팀의 상황을 개발팀이 따라가지 못한다. 그 반대의 상황이 일어나기도 한다. software를 개발하는 과정에서 가장 중요한 것은 stake holder의 요구사항에 신속하게 대응하는 것이다. PLAN ➡️ CODE ➡️ BUILD ➡️TEST ➡️ RELEASE ➡️ DEPLOY ➡️ OPERATE ➡️ MONITOR가 무한 반복하는 것이 DevOps의 특징인데 이를 하나하나 사람이 하기란 쉽지 않다. 그래서 필수적으로 붙는 것이 C..
[소프트웨어공학] 애자일(Agile)이란?
·
공부/소프트웨어공학
Agile Process, Agile Software Development, Agile Methodology ... 부르는 이름도 많은 애자일! "고객에게 가치가 있는 software를 일찍, 지속적으로 전달하여 고객을 만족시켜라." 애자일은 software를 개발하는 방식 중 하나다. 이전에 설명한 폭포수 방식과 개념적으로 반대되는 방식이다. 폭포수가 일방적으로 완벽히 정해진 스케줄을 그대로 따르며 선형적으로 진행하는 방식이었다면 애자일은 작은 iteration(또는 sprint, 주기)마다 제품을 만들고 고객과 끊임없이 소통하며 더 나은 production을 제작하는 방식이다. IID(Iterative and Incremental Development) 방식 채용! 작업 우선순위가 중요하며 시간이 지..
[소프트웨어공학] RAD(Rapid Application Development)란?
·
공부/소프트웨어공학
RAD(Rapid Application Development) 사용자가 지속적으로 참여할 수 있는, 빠르게 개발할 수 있는 Application 개발 라이프 사이클 모델 라고 하면... 이해하기가 좀 어렵다. 단순하게 말하면 사용자가 직접 참여하여 Application을 개발하는 방식이다. 사용자가 참여한다는 뜻은? 개발이 매우 단순하고 쉽다는 뜻이다. 반복적으로 피드백을 수용하기 때문에 개발 비용이 고정되어 있지 않다. ➡ 높은 수준을 요구하는 개발 환경에는 적합하지 않다. 예를 들어 자율주행자동차(이걸 소비자 입맛대로 만들 수 있다면 매우 위험할 것) ✅ 고객참여 ✅ 신속개발 ✅ 짧은 개발주기 포건시
[소프트웨어공학] 유지보수의 종류
·
공부/소프트웨어공학
유지보수의 종류 ✔ 수정 유지보수(corrective maintenance) 소프트웨어의 오류가 발견되었을 때 이를 수정하는 작업 ✔ 적응 유지보수(adaptive maintenance) 운영체계나 인프라 환경 등이 변화되었을 때 이 변화를 수용하도록 프로그램을 수정하는 작업 회사 정책이 변하거나 법률이 개정되었거나 등등 ✔ 완전 유지보수(perfective maintenance) 기능이나 성능을 개선하거나 새로운 기능을 추가하기 위하여 프로그램을 수정하는 작업 ✔ 예방 유지보수(preventive maintenance) 프로그램 오류가 발생하기 이전, 미연에 방지하기 위해 프로그램을 수정하는 작업 가장 많은 비율로 나타나는 유지보수는 Perfective 유형이다.
[소프트웨어공학] 폭포수(Waterfall) 모델이란?
·
공부/소프트웨어공학
SDLC (Software Development Lift Cycle) 소프트웨어를 개발하는 데 사용하는 시간·비용을 효율적으로 하는 프로세스 SDLC 중 대표적인 모델이 폭포수(Waterfall) 모델이다. 폭포수처럼 위에서 아래로 내려오는 선형 순차적인 모습을 떠올리자. ✔ 폭포수 모델의 특징 - 목적 불확실성 + 수단 불확실성 - 단계별로 나오는 산출물이 명확하다. - 동작하는 소프트웨어에 중점을 두기 보다는 프로세스 중심적이다. - 전 단계가 마무리 되어야 다음 단계로 갈 수 있다. - 사용자의 요구사항을 초기 단계에서 완벽 분석한다(== 목적 불확실성은 초기 단계에서 완벽 해결). - 요구사항 변경이 매우 힘들다. ✔ 폭포수 모델의 문제점 - 최종 개발된 프로덕션과 고객이 요구한 프로덕션이 다른 ..
[Unity] Composite Collider 2D 적용 후 Play 눌렀을 때 화면이 위로 올라가는 현상
·
공부/Unity
제목 그대로, Composite Coliider 2D를 적용한 뒤 플레이를 눌렀을 때 게임 화면이 위로 올라가는 현상이 나온다면 Rigidbody 2D의 Body Type이 Dynamic인 것입니다. Static으로 변경하세요
[Unity] [Collab] Collab service is deprecated and has been replaced with PlasticSCM 에러
·
공부/Unity
Unity에서 새로운 프로젝트를 생성하자 이런 에러가 계-속 나온다. 매초마다... 내가 찾은 해결 방안을 써보겠다... 1️⃣ project -> Reimport All 2️⃣ Edit -> Project Settings -> Services -> Collaborate -> OFF
[Git] GitHub Actions에 대하여
·
공부/Git
Application을 개발하며 버그가 일어나면 모두에게 그 사실을 알린다거나 문제가 해결되면 프로젝트의 '버그'란에 있는 문제를 삭제한다거나 하는 등 반복되는 작업이 수없이 많다. 개발자가 일일이 이를 확인하여 처리하는 것도 확실한 방법이지만 절대 효율적인 방법이라 할 수는 없다. 이런 반복 작업을 자동으로 대신 해주는 플랫폼이 많이 있는데 대표적으로 Jenkins, circleci 그리고 지금 알아볼 GitHub Actions등이다. ✅ GitHub Action는 CI/CD방법론을 사용하는 플랫폼이다. 이게 무엇이냐? 앱 개발단계에서 자동화를 도입하여 고객에게 수시로 어떤 행동을 수행하는 것이다. CI/CD의 주요 개념인 Continuous integration(지속적인 통합), Continuous ..