반응형

Software Engineering 104

40대-50대 소프트웨어 엔지니어는 한국에서 갈 곳이 없는가?

얼마 전, 차량 제어 소프트웨어 분야의 기업의 지인으로부터 인력 추천 요청을 받았습니다. 마침 떠오르는 인물이 있었는데요, 40대 중후반의 후배로, 업계 경력만도 20년에 가까우며, 실무 감각과 기술 리더십을 모두 갖춘 엔지니어였습니다.  그동안 함께 일한 경험이 있어서 그의 실력과 인성을 누구보다 잘 알고 있었기에, ‘이 정도 인재면 어디서든 환영받겠지’ 하는 마음으로 자신 있게 추천했습니다. 하지만 며칠 후, 그 후배의 나이를 확인한 회사 측에서 조심스럽게 난색을 표했습니다. 공식적인 이유는 밝히지 않았지만, “조직과의 조화”, “팀 내 연령 구조” 같은 말을 돌려 하는 걸 듣고 나니, 결국 핵심은 ‘나이’라는 걸 알 수 있었습니다.  그 일은 결국 ‘없던 일’이 되었고, 저 역시 후배에게 “이번 건..

소프트웨어 공학: 니즈(Needs) vs. 요구사항(Requirements)

소프트웨어 개발에서 성공적인 시스템을 구축하기 위해서는 사용자의 기대(니즈, Needs)를 정확하게 이해하고, 이를 충족할 수 있도록 구체적인 조건(요구사항, Requirements)으로 변환하는 과정이 필수적입니다. 그러나 많은 프로젝트에서 이 과정이 제대로 수행되지 않으면, 최종적으로 사용자의 기대와 다르게 동작하는 소프트웨어가 개발되는 경우가 많습니다. 소프트웨어 니즈와 소프트웨어 요구사항은 밀접한 관계를 가지지만, 개념적으로 명확한 차이를 갖고 있습니다. 소프트웨어 니즈는 사용자가 원하는 바를 반영하는 상위 수준의 개념이며, 소프트웨어 요구사항은 이를 실현하기 위한 구체적이고 검증 가능한 조건을 정의하는 것입니다. 이번 포스팅에서에서는 소프트웨어 니즈와 소프트웨어 요구사항의 의미를 설명하고, 두 ..

소프트웨어 개발의 딜레마: 품질과 일정을 균형 있게 관리하기 위한 변화 필요성

소프트웨어 엔지니어로서 우리는 늘 높은 품질의 소프트웨어 개발과 정해진 일정 내에 제품을 출시해야 하는 두 가지 과제를 동시에 해결해야 하는 어려움에 직면합니다. 이상적으로는 충분한 시간을 확보하여 요구사항을 철저히 분석하고, 체계적인 설계를 거쳐 코드 리뷰와 검증을 통해 완성도 높은 소프트웨어를 개발하는 것이 바람직합니다. 그러나 현실에서는 비즈니스 요구 사항에 따라 일정이 단축되는 경우가 많으며, 변경사항도 빈번할 뿐만 아니라, 이에 따라 품질을 확보하는 과정이 축소되거나 간소화되는 경우가 빈번하게 발생합니다. 이러한 일정 압박 속에서 품질을 충분히 확보하지 못한 소프트웨어가 출시되면, 이후 현장에서 문제를 일으키고, 개발자는 긴급한 버그 수정과 패치 작업에 시달리게 됩니다. 이러한 과정이 반복되면서..

소프트웨어 요구사항 모호성 & 일관성 해소: EARS (Easy Approach to Requirements Syntax)와 Glossary 활용

"모든 기능을 문제없이 동작하게 해 주세요!!" 언뜻 보면 완벽한 요구사항입니다.모든 기능을 구현해야 하고, 구현하는 모든 기능에 문제가 없어야 합니다.이만큼 완벽한 요구사항이 있을까요? ㅎㅎ 안타깝지만, 이게 최근까지도 현실에서 심심찮게 볼 수 있는 농담같은 진담이었습니다.이번 포스팅에서는 요구사항 작성시 발생하는 일관성과 모호성을 예방하기 위한 방안으로Easy Approach to Requirements Syntax (EARS)에 대해 살펴 보고자 합니다. 관련글 보기ISO/PAS 8800: AI 안전 요구사항 도출 (Derivation of AI Safety Requirements)명확한 요구사항 작성 (모호성 제거) - 시각적 요구사항 정의, 모델기반 요구사항 명세서 (Model-Based Req..

프로세스(Process) vs. 프로젝트(Project) 용어.. 잘 알고 계시죠?

한가지 에피소드를 살펴 볼까요?"프로세스가 없어서 그래!"프로젝트를 진행하면서 필요한 업무가 정의되어 있지 않을 때, 흔히들 "프로세스가 없어서 그래!!" 라고들 합니다. 그래서 프로세스를 정의해야 한다고 하면서 절차와 담당자를 지정하고 산출물을 정의한 프로세스 문서들을 많이 만들어 냅니다. 그런 다음 열심히 설명회를 하거나 교육을 진행하며, 실무자에게 프로세스를 준수 할 것을 요청합니다. 그런데 실무에서는 너무 많은 종류의 산출물로 인해 그리고 짧은 개발일정으로 인해 프로세스가 외면 받기 시작합니다. 또한 그렇게 시간이 흘러 조직이 변경되어 프로세스에 지정된 담당자가 존재하지 않거나, 프로세스 개선이란 이름으로 중간중간 누락된 절차들을 만들어 프로세스가 변화됩니다.  이 에피소드에서는 프로세스를 단순히..

Umbrella Organization (우산 조직)을 아시나요?

소프트웨어 개발 조직은 일반적으로 실제 소프트웨어를 개발하고 검증하는 직접 개발 수행 조직(Project Teams)과 소프트웨어 개발을 직접 수행하진 않지만, 이를 지원하거나 관리하는 Umbrella(우산) 조직(Management Teams)으로 나눌 수 있습니다. 이 두 조직은 서로 다른 역할을 수행하면서 협력하며 소프트웨어 개발 완성도를 높이고, 효율성과 품질을 개선할 수 있습니다. 실제로는 더 많은 조직들이 각자의 역할을 가지고 소프트웨어 개발에 기여하고 있겠지만, 이번 포스팅에서는 Umbrella Organization에 대해 좀 더 자세히 살펴 보고자 합니다.관련 글 보기소프트웨어공학: 소프트웨어 유지보수성 측정 - 왜 중요할까?소프트웨어 신뢰성 개선 전략 3가지 (3 Strategies f..

대한민국에서 차량 제어분야 고연차 소프트웨어 엔지니어로서의 도전과 성장

최근 자동차 산업은 전기차(EV), 자율주행차, 커넥티드카, SDV, 차량용 클라우드 서비스 등이 핵심 기술로 자리 잡으며, 자동차는 이제 단순한 이동 수단을 넘어 ‘소프트웨어 중심의 플랫폼’으로 진화하고 있습니다. 이러한 변화로 인해 소프트웨어 엔지니어에 대한 수요는 증가하고 있지만, 역설적으로 고연차 엔지니어들이 설 자리를 잃어가고 있는 현상도 나타나고 있습니다. 이 현상은 기술 변화 속도, 기업의 인력 운영 전략, 그리고 개인의 역량 변화가 복합적으로 맞물리면서 발생하고 있다고 생각됩니다. 관련 글 읽기소프트웨어 엔지니어가 갖춰야 할 핵심 역량 - 소프트웨어 엔지니어는 단순 개발자가 아닙니다.자동차 제어 소프트웨어 개발에서의 나쁜 소프트웨어 엔지니어 특징과 교훈소프트웨어 개발자 생산성에 관하여소프트..

소프트웨어 개발과 다품종 소량생산: 변경점 관리의 도전과 가치

소프트웨어 개발을 하다 보면 다품종 소량생산 체계를 위한 변경점 관리(Variant Management)라는 단어를 자주 마주하게 됩니다. 요즘같이 맞춤화(Mass Customization)가 점점 중요해지는 시대에, 소프트웨어 역시 단일 제품에서 다양한 사용자 요구를 만족시키는 방향으로 진화하고 있습니다. 문제는 이런 다양성이 개발 과정에서 단순히 옵션 몇 개를 추가하는 수준을 넘어, 변경점 관리라는 복잡한 과제를 가져온다는 점입니다. 변경점 관리는 단순히 “버전 관리” 이상의 문제입니다. 작은 변경이 전체 제품에 어떤 영향을 미칠지, 혹은 고객 맞춤형 요구사항이 기존 시스템과 얼마나 충돌할지를 고민하는 건 결코 쉬운 일이 아닙니다. 하지만 이런 어려움을 잘 극복하면, 우리가 꿈꾸는 Mass Custo..

MECE 원칙을 활용한 소프트웨어 Fault Tolerance 중복성 설계: 신뢰성과 효율성을 극대화하는 접근법

복잡한 의사결정과 문제 해결의 과정에서 명확성과 효율성을 달성하는 것은 항상 중요한 과제입니다. 특히 높은 신뢰성이 요구되는 안전 필수 소프트웨어 시스템을 위한 Fault Tolerance를 위한 모듈을 정의하는 상황에서는 소프트웨어 Fault Tolerance를 구현하기 위해 적절한 중복성(Redundancy)을 확보하는 하는 것은 매우 중요합니다. 이 과정에서 MECE(Mutually Exclusive, Collectively Exhaustive) 원칙은 체계적이고 명확한 Redundant Module을 설계하는 것을 가능하게 해 주는데, MECE는 중복성을 정의하는 과정에서 중복성의 효율성을 해치지 않으면서도(Mutually Exclusive), 모든 가능성을 포괄(Collectively Exhau..

Software Fault Tolerance와 소프트웨어 구현 기법 (N-Version Programming)

소프트웨어는 현대 사회에서 필수적인 역할을 담당하며, 다양한 분야에서 중요한 기능을 수행합니다. 특히, 항공, 자동차, 의료, 금융 시스템과 같이 높은 신뢰성과 안전성이 요구되는 영역에서는 결함(fault)이 발생해도 시스템이 안정적으로 동작할 수 있도록 보장하는 결함 허용(Software Fault Tolerance)이 필수적입니다. 1. Software Fault Tolerance란 무엇인가?Software Fault Tolerance는 소프트웨어 시스템이 결함(fault)이나 오류(error)가 발생하더라도 정상적인 기능을 유지하거나 복구할 수 있도록 설계하는 기법으로 다음과 같은 주요 목표를 가집니다.1-1. 주요 목표:Fault Detection: 결함 발생 여부를 신속히 감지.Fault Rec..

반응형