반응형

2024/12 19

자동차 제어 소프트웨어 개발에서의 나쁜 소프트웨어 엔지니어 특징과 교훈

소프트웨어 엔지니어 관련글 보기소프트웨어 엔지니어가 갖춰야 할 핵심 역량 - 소프트웨어 엔지니어는 단순 개발자가 아닙니다.프롬프트 엔지니어링: 인공지능 시대의 새로운 직업소프트웨어 개발자 생산성에 관하여자동차 산업은 기술 발전이 매우 빠르게 이루어지는 분야 중 하나로, 특히 제어 소프트웨어의 역할은 날로 중요해지고 있습니다. 차량의 성능, 안전성, 효율성을 좌우하는 중요한 요소가 바로 이 제어 소프트웨어에 달려 있기 때문에, 소프트웨어 엔지니어들의 역량은 그 어떤 분야보다도 중요한 역할을 합니다. 그러나 모든 소프트웨어 엔지니어가 동일한 가치를 발휘하는 것은 아닙니다. 오늘은 제가 자동차 제어 소프트웨어 개발 분야에서 경험한, 소위 ‘나쁜’ 소프트웨어 엔지니어의 특징에 대해 이야기해보겠습니다. 1. 지나..

SW 아키텍처 모듈화: 객체지향 설계 품질 향상 - CBO(객체 간 결합도) 메트릭 완벽 가이드

소프트웨어 아키텍처 모듈화 관련글 보기SW 아키텍처 모듈화: 왜 필요하고, 언제 고려해야 할까?SW 아키텍처 모듈화: 어떻게 할 수 있을까? 고려사항은 무엇일까?SW 아키텍처 모듈화: 아키텍처 응집도 측정 기법 (Lack of Cohesion in Methods, LCOM)SW 아키텍처 모듈화: 아키텍처 결합도 측정 기법 (Afferent and Efferent Coupling)"Coupling Between Objects (CBO)"는 객체 지향 소프트웨어 설계에서 모듈 간의 의존성을 측정하는 중요한 메트릭입니다. CBO는 클래스가 다른 클래스들과 얼마나 많은 의존성을 가지고 있는지를 정량적으로 평가합니다. 높은 CBO 값은 클래스 간의 결합도가 높다는 것을 의미하며, 이는 시스템의 유지보수성을 저하시..

FMECA를 활용한 신뢰성 및 위험 분석: 시스템 고장 예측과 개선 전략 (Failure Modes, Effects and Criticality Analysis)

FMECA는 고장 모드, 그로 인한 영향, 심각도를 분석해 시스템의 신뢰성과 안전성을 개선하는 체계적인 기법입니다.처음 접하는 경우 다소 생소할 수 있지만, 설계 초기 단계에서 잠재적 고장을 식별하고 예방 조치를 마련하는 데 핵심 역할을 합니다.이번 포스팅에서는 FMECA의 개념과 절차를 구체적으로 살펴보며 이를 어떻게 활용할 수 있는지 알아보겠습니다.   FMEA/FMECA 관련 포스팅SW FMEA의 Ground Rules - 사전활동, 준비물, 그라운드 룰DRBFM vs. FMEA - 소프트웨어 개발에서 차이점과 장단점DRBFM (Design Review Based on Failure Modes) - 수행 원칙, 사전 준비, 수행 절차ISO 26262: Vocabulary (Part 1), 기능안전 ..

끊임없이 진화하는 소프트웨어: Lehman의 8대 법칙 (리먼 법칙)

소프트웨어는 현대 사회의 모든 영역에 스며들어 있습니다.하지만 우리가 매일 사용하는 소프트웨어 시스템이 어떤 원칙에 따라 진화하고 있는지,그리고 이를 어떻게 관리해야 하는지에 대한 고민은 깊지 않을 수 있습니다.이번 포스팅에서는 소프트웨어 진화의 이론적 기반을 제공한 리먼의 8대 법칙을 살펴보고,이를 최근 소프트웨어 개발 및 유지보수 이슈와 연결 지어 살펴 보겠습니다.   Lehman's Law (리먼 법칙)1. 지속적 변화의 법칙 (Law of Continuing Change)"변화하지 않으면 도태된다."리먼의 첫 번째 법칙, 지속적 변화의 법칙은 소프트웨어가 사용자의 요구와 환경 변화에 따라 지속적으로 업데이트되어야 함을 강조합니다. 이 법칙은 단순히 소프트웨어가 정체되지 않고 유용성을 유지하기 위..

객체지향 프로그래밍의 핵심: 추상화란 무엇인가?

객체지향 프로그래밍에서 추상화는 이해하기 어렵고 복잡하게 느껴질 수 있습니다.하지만 추상화는 복잡성을 줄이고 효율적인 설계를 가능하게 하는 핵심 원리입니다.이번 포스팅에서는 추상화를 쉽게 이해하고 적용할 수 있는 방법을 알아보겠습니다.  객체 지향의 4대 핵심 원칙 및 추상화(Abstraction)의 중요성객체지향 프로그래밍(Object-Oriented Programming, OOP)은 소프트웨어 설계에서 복잡성을 줄이고 재사용성을 높이는 데 중점을 둔 프로그래밍 패러다임입니다. 객체지향의 4대 핵심 원칙은 추상화(Abstraction), 캡슐화(Encapsulation), 상속(Inheritance), 다형성(Polymorphism)으로, 이 원칙을 이해하고 활용하면 더 체계적이고 유연한 소프트웨어를 ..

객체지향 프로그래밍에서 클래스(Class)와 객체(Object): 핵심 개념 이해하기

객체지향 프로그래밍(Object-Oriented Programming, OOP)은 현대 소프트웨어 설계와 개발에서 가장 널리 사용되는 패러다임입니다. 객체지향 프로그래밍에서 가장 중요한 두 가지 개념은 바로 클래스(Class)와 객체(Object)입니다. 클래스를 설계하고, 객체를 활용함으로써 객체지향 프로그래밍은 코드의 재사용성, 유연성, 유지보수성을 크게 향상시킬 수 있습니다. 이번 글에서는 클래스와 객체의 정의, 역할, 차이점, 그리고 객체지향 프로그래밍에서 이들을 어떻게 활용할 수 있는지 구체적인 사례와 함께 알아보겠습니다. 클래스(Class)란?클래스는 객체를 생성하기 위한 설계도 또는 청사진(Template)입니다. 객체지향 프로그래밍에서 클래스는 데이터(속성)와 동작(메서드)을 정의하는 역할..

소프트웨어공학: 테스트 케이스(Test Case)의 핵심 구성 요소

테스트케이스는 소프트웨어의 특정 기능이나 요구사항이 의도대로 작동하는지 검증하기 위한 상세한 절차와 조건을 포함하는 문서입니다. 소프트웨어 개발에서 테스트케이스는 품질 보증의 핵심 역할을 하며, 이를 체계적으로 설계하고 관리하는 것은 프로젝트의 성공 여부를 결정짓는 중요한 요소입니다. 이번 포스팅에서는 소프트웨어 테스트케이스를 구성하기 위한 주요 핵심 요소에 대해 알아보겠습니다. 1. 테스트 케이스 식별자 (Test Case ID)테스트케이스 식별자(Test Case ID)는 테스트케이스를 식별하고 체계적으로 관리하기 위한 고유한 번호 또는 코드입니다. 이 식별자는 테스트케이스를 중복 없이 관리하고, 요구사항, 결함, 테스트 결과 간의 관계를 추적할 수 있도록 돕습니다. 테스트케이스 ID는 검색, 정렬,..

시스템 엔지니어링: 시스템 공학 관점과 시스템 사고

시스템 공학 관점은 시스템적 사고를 기반으로 합니다. 이러한 시스템적 사고는 현실을 이해하는 특별한 방법을 제공하며, 전체 시스템과 그 내부의 구성요소들이 어떻게 상호작용하는지를 이해하는 것이 중요합니다. 시스템적 사고의 주요 개념1. 부분이 아니라 전체를 바라 볼 수 있어야 합니다.‘부분이 아니라 전체를 바라본다’는 것은 개별 구성 요소의 특성과 역할뿐 아니라, 이들이 상호작용하며 만들어내는 전체적인 결과와 행동을 이해하는 데 초점을 맞춘다는 의미입니다.전체는 부분의 단순 합이 아닙니다.시스템의 각 요소는 독립적으로 작동하는 것이 아니라, 서로 연결되고 영향을 주고받으면서 새로운 특성을 만들어냅니다. 이를 시너지 효과(Emergent Properties)라고 합니다.예: 자동차는 엔진, 바퀴, 기어 등..

System Engineering 2024.12.13

소프트웨어 측정을 위한 지표 - 프로세스, 제품, 프로젝트

소프트웨어 측정 지표는 프로세스 지표, 제품 지표, 프로젝트 지표로 구분됩니다.프로세스 지표는 소프트웨어 개발 과정의 효율성과 품질을 평가하며, 결함 발견률, 작업 완료 시간, 재작업률 등이 포함됩니다. 이를 통해 프로세스 최적화와 문제 해결이 가능합니다.제품 지표는 소프트웨어 제품 자체의 품질과 성능을 평가합니다. 코드 복잡도, 결함 밀도, 응답 시간 같은 지표를 활용하여 제품의 품질을 개선하고 사용자 요구사항을 충족시킬 수 있습니다.프로젝트 지표는 일정, 비용, 자원 사용 등을 평가하여 프로젝트 진행 상황과 리스크를 관리합니다. 일정 준수율, 작업 완료 비율, 비용 초과율 등이 주요 지표로 사용됩니다.2021.01.24 - [Software Engineering] - 일반적인 소프트웨어 측도 (Mea..

소프트웨어 측정(Software Measurement) - 개요 및 종류

소프트웨어 개발 프로젝트를 진행하면서,많은 팀이 “더 나은 품질”, “효율적인 프로세스”, “예산 및 일정 준수”라는 목표를 가집니다.그러나 이러한 목표를 달성하기 위해서는 먼저 명확한 데이터와 지표를 기반으로 한 의사결정이 필요합니다.소프트웨어 측정(Software Measurement)은 바로 이러한 데이터를 제공하며,프로젝트의 성공 여부를 결정짓는 중요한 역할을 합니다.이번 글에서는 소프트웨어 측정의 정의, 필요성, 주요 지표를 살펴 보겠습니다.  소프트웨어 측정(Software Measurement)이란?소프트웨어는 하드웨어와 달리 그 결과물을 눈으로 확인할 수 없습니다. 따라서 테스트를 통해 기능적 완결성, 즉 기능 구현이 완료되었는지는 확인 할 수 있지만, 내부 구조의 적절성이나 성능, 신뢰성..

반응형