728x90
반응형

Software Engineering 92

국내 소프트웨어 경쟁력 현황, 저해 요소 및 개선 방안 (정보과학회지 특별기고문, 2024.12)

한국정보과학회 www.kiise.or.kr 산업계 여러분야에서 소프트웨어의 중요성과 소프트웨어 엔지니어의 역할과 위상이 그 어느때 보다 높아진 것은 부정할 수 없는 현실입니다. 그럼에도 불구하고, 냉정하고 객관적인 시선으로 국내 소프트웨어 경쟁력을 진단한 사례는 부족한 편입니다. 이에 국내 소프트웨어 경쟁력의 현 주소와 앞으로 다가올 시대에 무엇을 준비하는 것이 필요한지에 대한 방향성에 대한 심도있는 고민과 토론할 수 있는 기회가 있었습니다. 그리고 그 결과물을 짧게나마 정리된 글이 "한국정보과학회지 12월 특별기고문" 형식으로 실렸습니다. 다음은 간략한 요약입니다.1. 국내 소프트웨어 산업의 현황국내 소프트웨어(SW) 산업은 IT 서비스, 패키지 SW, 게임 SW 등으로 다양하게 구성되어 있으며, 그 ..

명확한 요구사항 작성 (모호성 제거) - 시각적 요구사항 정의, 모델기반 요구사항 명세서 (Model-Based Requirements Specification, MBRS)

모델 기반 요구사항 명세(MBRS)는 시스템 및 소프트웨어 엔지니어링에서 자연어의 모호성을 줄이기 위해공식적이거나 반공식적인 모델링 언어를 활용하는 접근 방식입니다.통합 모델링 언어(UML) 또는 시스템 모델링 언어(SysML)와 같은 표준화된 모델링 언어를 사용하여요구사항을 명확하고 간결하게 정의하며, 이는 건축 설계 도면처럼 시스템 설계를 위한 청사진 역할을 합니다.   MBSE (Model Based System/Software Engineering) 관련 글OMG SysML 다이어그램 마스터하기::모델링 가이드MBSE Example #1: 차량 가속도 vs. 연비 - 트레이드오프 분석 (with SysML)SPL: 도메인 요구공학 (Domain Requirements Engineering)소프트웨..

소프트웨어 공학: 소프트웨어 품질과 개발 생산성 - 오해에서 진실로

소프트웨어 개발 현장에서 종종 품질 관리 활동이 개발 생산성을 저하시킨다는 오해가 있습니다.예를 들어, 테스트 자동화 도입, 코드 리뷰 강화와 같은 품질 활동이 개발 속도를 늦추고비용을 증가시킨다고 생각하는 사람들이 많습니다.그러나 이는 잘못된 생각입니다. 장기적인 관점에서 품질 관리 활동은 오히려 생산성을 향상하고,더 나아가 조직의 성공을 보장합니다.   소프트웨어 품질은 개발 생산성에 중대한 영향을 미치는 요소로, 조직과 개발자 모두에게 중요합니다. 품질은 단순히 결함이 없는 상태를 넘어, 유지보수성, 가독성, 시스템 신뢰성 등 다양한 측면에서 측정됩니다. 실제로 구글(Google)은 개발 생산성과 품질의 관계를 심층적으로 분석하며, 프로세스 품질과 코드 품질의 상호작용이 생산성에 미치는 영향을 연구..

소프트웨어공학: 소프트웨어 유지보수성 측정 - 왜 중요할까?

소프트웨어 유지보수성은 개발 프로젝트의 성공 여부를 좌우할 수 있는 중요한 요소입니다.소프트웨어를 출시한 이후 발생하는 유지보수 비용은전체 소프트웨어 소유 비용(Total Cost of Ownership, TCO)의 70-80%에 달한다고 합니다.이는 유지보수성이 높은 소프트웨어를 설계하는 것이 얼마나 중요한지 보여줍니다.이번 포스팅에서는 소프트웨어 유지보수성을 측정하는 방법과 이를 향상시키기 위한 핵심 요소를 소개합니다.   소프트웨어 유지보수 비용의 분류소프트웨어 유지보수 비용은 소프트웨어가 초기 개발 단계에서 출시된 후, 지속적으로 동작하고 효과적으로 사용되도록 하기 위해 소요되는 모든 비용을 의미합니다. 이는 소프트웨어의 수명 주기에서 가장 큰 비중을 차지하는 비용 요소로, 전체 소유 비용(TCO..

소프트웨어공학: 소프트웨어 생산성 측정과 개선 - 생산성 개선 절차

소프트웨어 개발에 있어 개발자들을 대상으로 한 생산성을 측정하고 관리하는 것은매우 어려운 주제 중 하나입니다. 생산성 측정에는 마법같은 해결책이 있는 것도 아니고요.이번 포스팅에서는 소프트웨어 생산성을 측정하고 개선하기 위한 실무적 접근법에 대해 살펴 보겠습니다.  이 포스팅은 Cristof Ebert "Measure and Improve Software Productivity" (IEEE Software, DOI Bookmark: 10.1109/MS.2023.3324466)의 내용을 기반으로 작성되었습니다. 이번 포스팅에서는 소프트웨어 생산성을 효과적으로 측정함에 있어 모호한 선언 대신 실질적인 방법론에 대해 설명하고자 합니다. 조사 결과에 따르면 팀 협업, 도구의 효율성, 프로세스 개선, 관리 관행 ..

소프트웨어공학: 소프트웨어 생산성 측정과 개선 - 생산성 측정 프로세스

소프트웨어 개발에 있어 개발자들을 대상으로 한 생산성을 측정하고 관리하는 것은매우 어려운 주제 중 하나입니다. 생산성 측정에는 마법같은 해결책이 있는 것도 아니고요.이번 포스팅에서는 소프트웨어 생산성을 측정하고 개선하기 위한 실무적 접근법에 대해 살펴 보겠습니다.  이 포스팅은 Cristof Ebert의 "Measure and Improve Software Productivity" (IEEE Software, DOI Bookmark: 10.1109/MS.2023.3324466)의 내용을 기반으로 작성되었습니다. 소프트웨어 공학 전체글 바로가기 소프트웨어 생산성 측정과 개선소프트웨어공학: 소프트웨어 생산성 측정과 개선 - 생산성 측정 프로세스소프트웨어공학: 소프트웨어 생산성 측정과 개선 - 생산성 개선 절..

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

소프트웨어 엔지니어 관련글 보기소프트웨어 엔지니어가 갖춰야 할 핵심 역량 - 소프트웨어 엔지니어는 단순 개발자가 아닙니다.프롬프트 엔지니어링: 인공지능 시대의 새로운 직업소프트웨어 개발자 생산성에 관하여자동차 산업은 기술 발전이 매우 빠르게 이루어지는 분야 중 하나로, 특히 제어 소프트웨어의 역할은 날로 중요해지고 있습니다. 차량의 성능, 안전성, 효율성을 좌우하는 중요한 요소가 바로 이 제어 소프트웨어에 달려 있기 때문에, 소프트웨어 엔지니어들의 역량은 그 어떤 분야보다도 중요한 역할을 합니다. 그러나 모든 소프트웨어 엔지니어가 동일한 가치를 발휘하는 것은 아닙니다. 오늘은 제가 자동차 제어 소프트웨어 개발 분야에서 경험한, 소위 ‘나쁜’ 소프트웨어 엔지니어의 특징에 대해 이야기해보겠습니다. 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)"변화하지 않으면 도태된다."리먼의 첫 번째 법칙, 지속적 변화의 법칙은 소프트웨어가 사용자의 요구와 환경 변화에 따라 지속적으로 업데이트되어야 함을 강조합니다. 이 법칙은 단순히 소프트웨어가 정체되지 않고 유용성을 유지하기 위..

728x90
반응형