728x90
반응형

소프트웨어공학 11

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

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

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

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

소프트웨어 공학: Software Product Line (SPL)

예전에 정리했던 SPL (소프트웨어 제품 라인)에 대해 업데이트를 해 보려고 합니다.어려운 개념은 아니지만, 적용하기는 쉽지 않은거 같아요.수년동안 노력을 했지만, 정말 어려운거 같은데요.이번 포스팅을 통해 다시 정리도 하고, 마음도 다잡는 기회가 되면 좋겠습니다.   제품 라인 (Product Line)과 소프트웨어 제품 라인(Software Product Line)의 정의"제품 라인(Product Line)"이란 특정 마켓 세그먼트 혹은 미션의 구체적인 니즈를 충족시키고, 특정한 방식에서 핵심 자산의 공통집합을 이용하여 개발된 공통의 피처(Feature) 집합을 공유하는 소프트웨어 집약적인 시스템들의 집합입니다."소프트웨어 제품 라인(Software Product Line)" 이란 플랫폼과 대량의 고..

해외 AI 안전연구소 추진 현황과 시사점

소프트웨어 정책연구소에서 몇일전 내 놓은 자료가 있는데, 최근 많은 사람들의 관심을 끌고 있는 생성형 AI가 윤리적 문제와 같은 잠재적 위험에 대한 우려에 대해 해외에서 추진되고 있는 인공지능 규제에 대한 연구현황 자료입니다.오늘은 이 보고서를 읽고 간략히 정리 해 보고자 합니다. 생성형 AI의 위험성먼저 생성형 AI의 위험성에 대해 언급하고 있는데, 생성형 AI 기술의 오작동, 악의적 사용, 블랙박스 모델 등으로 인해 사회적 피해와 그 결과의 해석에 많은 어려움이 발생하고 있다는 점을 소개하고 있습니다. 이에 수많은 AI 전문가들이 언젠가는 AI 기술이 인간의 통제를 벗어나 인류의 실존적 위협이 될 수 있다고 경고하는 내용도 포함하고 있습니다. 국제 규제 동향먼저 2024년 5월, 유럽연합에서는 세계 ..

System Engineering 2024.07.27

인공지능과 소프트웨어 공학: 융합의 시대

인공지능(AI, Artificial Intelligence)과 소프트웨어 공학(Software Engineering)은 현대 소프트웨어 기술 발전에 절대적 기여를 하고 있는 분야로서, 이 두 분야의 융합은 다양한 산업에 혁신을 가져올 수 있다고 생각합니다. 하지만 두 분야의 융합을 위해 필요한 개념 정리와 고려사항들이 체계적으로 정리되지 못한 듯하여, 이번 블로그에서는 이런 내용을 다뤄보고자 합니다. 1. 인공지능(AI)란 무엇인가?인공지능은 컴퓨터 시스템이 인간의 지능적 작업을 수행할 수 있도록 만드는 기술입니다. AI는 머신 러닝(ML, Machine Learning), 자연어 처리(NLP, Natual Language Processing), 컴퓨터 비전(CV, Computer Vision) 등 다양..

소프트웨어 형상관리와 소프트웨어 개발

소프트웨어 형상관리 (Software Configuration Management)의 의미소프트웨어 형상관리는 다양한 소프트웨어 개발 표준에서 중요하게 언급되며, 각 표준은 형상관리의 정의와 목적을 명확히 하고 있습니다. 다음은 대표적인 소프트웨어 관련 표준에서 언급한 소프트웨어 형상관리의 정의입니다.더보기 ISO/IEC/IEEE 12207ISO/IEC/IEEE 12207은 소프트웨어 생명 주기 프로세스를 정의하는 국제 표준으로 소프트웨어의 일관성, 무결성, 추적성을 유지하고, 변경사항을 효과적으로 관리하여 소프트웨어 품질을 보장하기 위한 방안으로 소프트웨어 형상관리를 다음과 같이 정의하고 있습니다."형상관리는 소프트웨어 제품의 구성 요소와 관련 문서의 상태를 식별하고, 변경을 제어하며, 상태와 변경 이..

소프트웨어 공학의 중요성: 의사소통과 협업을 중심으로

소프트웨어 공학의 주된 목적은 "고품질의 소프트웨어를 효율적으로 개발하고, 유지보수 하는 것"입니다. 그래서 일반적으로 소프트웨어 공학의 중요성을 이야기할 때, 생산성과 품질 관점에서 소프트웨어 개발 및 검증 프로세스, 소프트웨어 품질 및 생산성 개선, 개발 및 검증 방법론, 유지보수, 비용 등의 기술적 주제를 중심으로 소프트웨어 공학의 필요성과 중요성을 이야기합니다. 물론 이러한 논점에 이견이 있을 수는 없을 것입니다. 그러나 개인적 경험을 바탕으로 볼 때, 소프트웨어 공학이란 학문을 구성하는 주요 요소로는 결국 "사람"이며 다수의 팀원이 협업을 통해 소프트웨어를 개발하고, 프로세스를 실행하며, 품질과 생산성에 기여하는 등 소프트웨어 공학의 모든 행위에 있어 가장 중요한 활동 중 하나가 바로 "의사소통..

소프트웨어 개발자 생산성에 관하여

이 글은 2023년 IEEE Software Magazine에 등재된 "A Human-Centered Approach to Developer Productivity"를 기반으로 작성되었습니다.  소프트웨어를 개발하는 사람을 흔히 "개발자"라고 부릅니다.소프트웨어 공학적 관점에서 보았을 때, 소프트웨어 개발에 관여하는 수많은 이해관계자들이 있고, 이들은 각기 다른 역할(Role)을 부여하고 있음에도 불구하고, 우리나라에서는 "개발자"라는 말로 모두 "퉁"쳐서 지칭하고 있으며, 실제 업무에서도 이들 "개발자"에게 모든 책임(Responsibility)을 전가하여 과중한 업무로 내몰고 있는게 현실이라고 생각됩니다.  이는 소프트웨어 개발에 대한 생산성과 직접적인 연관성이 있을 것이며, 개발자 생산성은 IT 산..

소프트웨어 진화와 아키텍처 트레이드 오프 (Software Evolution and Architecture Trade-Off)

소프트웨어 아키텍처는 인생처럼 불완전한 정보와 시간 압박 속에서 수많은 상황과 제약에 따른 트레이드 오프 결정을 내리는 과정입니다. 완벽한 소프트웨어 아키텍처를 찾으려는 팀은 실망할 가능성이 높지만, 완벽하지 않더라도 다른 대안이 없다면, 어쩔수 없는 트레이드 오프 결정을 내려야 할 때가 많습니다. 예를 들어, 진화할 수 없고 유지 보수가 어려운 취약하고 비용이 많이 드는 시스템이 그렇습니다. 또한 여러 이해관계자들의 다양한 니즈를 충족시켜야 한다는 점에서도 트레이드 오프 결정이 필요한 경우가 많습니다. 특히, 소프트웨어 아키텍처 결정 시점에 수많은 품질 속성 요구사항이 존재하지만, 모든 품질 속성 요구사항을 만족시킨다는 것은 현실적으로 불가능하기 때문에 역시 트레이드 오프가 필요합니다. 그외에도 트레이..

Software Isolation During the Software Refactoring

최근 3~4년간 시간들을 돌이켜보면 소프트웨어 관련 기술들을 실무에 적용하기 위해 상당한 시간을 들였던 것으로 기억합니다. 소프트웨어를 개발하는 조직에서 소프트웨어 엔지니어로 살기 위해 여러 케이스를 고려한 나름의 노력이었는데, 안타깝지만 성과는 크지 않았던 것이 현실이었습니다.이런 무성과? 저성과?의 이유를 생각해 보면, 결국 조직적 이슈였던거 같은데 지속적으로 소프트웨어를 개발하고 유지보수하는 업무를 단순화 그리고 효율화하기 위한 노력이 왜 조직적 이슈로 인해 무산(?) 되었을까.. 그리고 무엇이 이러한 조직적 이슈를 야기시키고 있는 것일까 생각해 봅니다. 결국 생각해보면, "소프트웨어에 새로운 기능이 요구되고, 시간이 지남에 따라 복잡해지고 (예를 들어 불필요한 종속성, 중복되거나 강하게 결합된 기..

728x90
반응형