목록전체 글 (114)
승코딩당당당
설계·구현·검증자동차 소프트웨어 개발에서 설계·구현·검증 단계는 요구사항을 실제로 동작하는 소프트웨어로 만들어 가는 핵심 과정이다.이 단계에서는 “무엇을 만들 것인가”에서 나아가 “어떻게 만들고, 올바르게 만들어졌는가”를 확인한다. 소프트웨어 설계소프트웨어 설계는 구현에 앞서 소프트웨어를 구성하는 요소와 구조를 정의하는 활동이다.설계는 이후 구현과 테스트의 기준이 되며, 변경과 확장에 유연하게 대응하기 위한 기반을 만든다.설계는 크게 두 단계로 나뉜다. 1. 아키텍처 설계상위 수준에서 소프트웨어 구성 요소들 간의 관계를 정의하는 활동이다.구조 설계, 데이터베이스 설계, 인터페이스 설계가 포함되며, 시스템 전반의 흐름과 책임 분리를 결정한다.아키텍처는 이해관계자 간 공통의 의사소통 수단이 되며,기능성, ..
V-Model과 요구사항 공학자동차 소프트웨어 개발에서 V-Model은 개발 단계와 테스트 단계를 1:1로 대응시켜 관리하는 대표적인 개발·검증 모델이다.이 모델의 핵심은 요구사항 공학이 모든 단계의 기준이 된다는 점이다. V-Model의 기본 개념V-Model은 왼쪽에서 정의·설계,오른쪽에서 검증·확인이 이루어지는 구조를 가진다.왼쪽: 요구사항 정의 → 설계 → 구현오른쪽: 단위 테스트 → 통합 테스트 → 시스템 테스트 → 인수 테스트각 테스트 단계는 대응되는 요구사항 또는 설계 산출물을 기준으로 수행된다.즉, 테스트는 구현 이후에 갑자기 시작되는 활동이 아니라, 요구사항 단계부터 함께 고려되는 활동이다. 요구사항의 정의요구사항이란 현실 세계의 문제를 해결하기 위해 고객에 의해 요구되거나,표준을 만..
자동차 소프트웨어 개발에서 안전 요구사항과 해저드 분석은사고가 발생한 이후의 대응이 아니라, 사고를 사전에 예방하기 위한 핵심 활동이다. 해저드 분석 및 리스크 평가는 시스템에서 발생할 수 있는 위험 요인을 식별하고,허용 불가능한 위험(Unacceptable Risk)을 예방하거나 완화하기 위한안전 목표(Safety Goal)를 정의하는 과정이다. 해저드 분석 및 리스크 평가 프로세스 개요해저드 분석과 리스크 평가는 일반적으로 다음과 같은 단계로 수행된다. 1. 시스템 정의 (System Definition)가장 먼저 시스템이 수행해야 할 기능(System Functions)을 정의한다.시스템이 무엇을 하고, 어떤 환경에서 운용되는지를 명확히 이해해야 이후 단계에서 발생 가능한 위험을 식별할 수 있다...
문제[C++] 백준 1300: K번째 수 GOLD 1https://www.acmicpc.net/problem/1300 접근 방법이 문제는 N×N 곱셈표에서 오름차순으로 정렬했을 때 K번째에 오는 수를 구하는 문제다.곱셈표 B를 아래와 같이 두고,B[i][j] = i * j (1 ≤ i, j ≤ N)이걸 평탄화해서 정렬했을 때 K번째 수를 찾는 게 목표다. 처음에는 실제로 N×N 배열에 값을 모두 채운 뒤 정렬해서 K번째 값을 찾는 방식으로 시도했는데,N의 범위가 크다 보니 메모리 초과가 계속 발생했다..그래서 곱셈표 전체를 만들지 않고, “어떤 값 X보다 작거나 같은 수가 곱셈표 안에 몇 개 있는지” 를 이용해서이분 탐색(Parametric Search) 으로 답을 찾는 방식으로 바꾸었다. 이 알고리즘..
문제[C++] 백준 2343: 기타 레슨 GOLD 5https://www.acmicpc.net/problem/2343 접근 방법이 문제는 N개의 강의를 순서를 유지한 채로 M개의 블루레이에 녹화할 때,각 블루레이의 최소 용량(길이) 를 구하는 문제다. 중요한 점:강의는 나누어 담을 수 없다.순서를 바꿀 수도 없다.블루레이 용량은 모두 동일해야 한다.그래서 “블루레이 용량이 X일 때, M개 이내로 모든 강의를 담을 수 있는가?”에서이 값 X를 이분 탐색(Parametric Search) 으로 찾는 식으로 접근했다.한 블루레이의 최소 용량은 가장 긴 강의 길이보다 작을 수 없다.→ start = max(vect[i])한 블루레이의 최대 용량은 모든 강의를 한 장에 몰아 넣는 경우→ end = 모든 강의 길..
문제[C++] 백준 1920: 수 찾기 SILVER 4https://www.acmicpc.net/problem/1920 접근 방법이 문제는 주어진 수열에 특정 값이 존재하는지 여부를 빠르게 판단하는 문제이다.수의 개수가 많기 때문에, 단순히 하나씩 비교하는 선형 탐색은 비효율적이다.그래서 먼저 수열을 정렬한 뒤, 이진 탐색(Binary Search) 을 이용해 각 값이 존재하는지 확인했다.이진 탐색은 탐색 범위를 절반씩 줄여 나가기 때문에, 한 번의 탐색을 O(log N)에 수행할 수 있다. 구현 시 주의할 점이진 탐색을 사용하려면 반드시 사전에 정렬이 되어 있어야 한다.start, end 범위는 start 값을 찾았을 때는 바로 출력하고 탐색을 종료해야 불필요한 반복을 줄일 수 있다.끝까지 탐색했는데..
그래프 탐색 알고리즘이 아닌 배열 기반 탐색에서 가장 자주 등장하는 알고리즘이 바로 이진 탐색(Binary Search)이다.이진 탐색은 정렬된 데이터를 전제로 하여, 탐색 범위를 절반씩 줄여가며 원하는 값을 찾아내는 매우 효율적인 알고리즘이다.구현과 원리가 비교적 단순하지만, 시간 복잡도가 뛰어나기 때문에 코딩 테스트에서는 단독 문제뿐만 아니라 부분 문제로도 자주 활용된다.이번 글에서는 이진 탐색의 개념과 특징, 동작 원리, 시간 복잡도를 중심으로 정리해보려고 한다. ✍️ 이진 탐색이란?이진 탐색(Binary Search)은 정렬된 데이터에서 원하는 값을 빠르게 찾아내는 탐색 알고리즘이다.탐색 대상의 중앙값과 찾고자 하는 값을 비교하면서,조건에 따라 탐색 범위를 절반씩 줄여 나가는 방식으로 동작한..
Automotive SPICE 개요🔍개발 배경자동차 소프트웨어의 규모와 복잡도가 급격히 증가하면서, 글로벌 자동차 OEM들은 다음과 같은 고민을 하게 되었다.전장 소프트웨어 시스템의 프로세스와 제품 품질이 모두 우수한 업체를 어떻게 선정할 것인가?OEM만 잘한다고 해결되지 않음실제 소프트웨어 시스템을 개발하는 부품 업체에 대한 평가 기준 필요자동차 산업의 특성을 반영한 공통된 프로세스 품질 평가 기준 필요이러한 배경에서 유럽 OEM 업체들이 연합하여 HIS(Hersteller Initiative Software) 그룹을 구성하였다.이들은 ISO/IEC 12207, ISO/IEC 330xx 국제 표준을 기반으로, 자동차 소프트웨어 시스템 개발에 특화된 프로세스 모델을 만들었고 이것이 바로 Automoti..
*스포주의*서두 발췌 또 다른 한 장의 사진이 가장 기괴하다. 이제는 나이를 짐작할 수도 없을 정도다. 머리는 희끗희끗하다. 그런 남자가 몹시 더러운 방(방 벽이 세 군데 정도 허물어져 내린 것이 그 사진에 뚜렷하게 찍혀 있었다.) 한쪽 구석에서 작은 화로에 양손을 쪼이고 있는데, 이번에는 웃고 있지 않다. 아무런 표정이 없다. 말하자면 쭈그리고 앉아 화로에 양손을 쪼이다가 그냥 그대로 죽어간 것 같은, 정말로 기분 나쁘고 불길한 냄새를 풍기는 사진이다. 이상한 것은 그뿐이 아니다. 그 사진에는 얼굴이 비교적 크게 찍혀 있어서 그 생김새를 자세히 살펴볼 수가 있었는데 이마도 평범, 이마의 주름도 평범, 눈썹도 평범, 눈도 평범, 코도 입도 턱도... 아아, 그 얼굴에는 표정이 없을 뿐만 아니라 인상조차..
자동차 소프트웨어 개발 프로세스 개요우리는 지금 소프트웨어 중심 사회에 살고 있다.알파고와 이세돌의 대결 이후 ‘4차 산업혁명’이라는 키워드가 대중화되었고,인공지능(AI), 사물인터넷(IoT), 자율주행 기술이 사회 전반의 핵심 기술로 자리 잡았다.자동차 산업 역시 이러한 변화의 중심에 있다. 자동차의 전장화와 소프트웨어 중심 차량자동차는 점점 전장화(Electrification & Electronics) 되고 있으며, 전장화율의 증가는 곧 소프트웨어 비중의 증가를 의미한다.이를 대표하는 개념이 바로 SDV(Software Defined Vehicle) 이다.차량의 기능이 하드웨어보다 소프트웨어에 의해 정의OTA(Over-The-Air) 업데이트를 통한 기능 확장소프트웨어가 차량 경쟁력의 핵심 요소로 ..