2016년 1월 25일 월요일

SW 요구사항과 설계의 적용 방향

요구사항이란 이용자가 어떤 문제를 해결하거나 목표를 달성하기 위해 필요로 하는 조건이나 능력을 의미하며 계약을 수행하거나 표준에 맞추거나 산출물을 만족하기 위해 시스템의 전체 혹은 일부가 갖추어야 하는 조건이나 능력, 요구의 총체를 의미하기도 한다.

이러한 요구사항을 구조적, 이론적, 논리적으로 접근하고 최종산출물에 보다 가깝게 구현할 수 있도록 지원하는 것이 바로 SW요구공학이다. 요구사항의 획득, 분석, 명세, 검증 및 변경관리 등에 대한 제반활동과 원칙, 요구사항 생성 및 관리를 체계적, 반복적으로 수행하고, 요구사항 관리에 포함되는 모든 생명주기활동과 이를 지원하는 프로세스, 시스템 요구사항 문서를 생성, 검증, 관리하기 위하여 수행되는 구조화된 활동의 집합이기도 하다. 아울러 요구사항 명세를 최종 산출물로 생성한다.

< SW요구사항 관련 지식체계 및 국제표준 >


요구공학은 이해관계자 사이에 효과적인 커뮤니케이션 수단을 제공하고 요구사항에 대한 공통 이해를 설정한다. 요구사항에 대한 손실을 방지하고 에러 감지로 불필요한 비용을 절감하고 구조화된 요구사항으로 요구사항 변경 추적을 가능하게 하는 것이다.

요구사항의 개발은 이해관계자와 개발자가 함께 이해관계자의 니즈와 시스템 개발시 제약사항을 발견하여 검토하고 명확화 하는 이해과정인 요구사항 추출단계에서부터 추출된 요구사항을 분석하고 요구사항을 구조화하여 각종 대안들을 결정하는 피드백 역할을 수행하는 분석단계를 지나 분석과정에서 선별된 기능을 기반으로 요구사항을 명세화하고 요구사항의 승인기준(문서화, 명확성, 간결성, 이해성, 시험성, 사용성, 추적성, 검증성 등)을 정의하여 요구사항을 확인하고 검증하는 단계로 이루어져 있다.

요구사항 기법은 가장 전통적인 방식으로 분석과 고객간의 인터뷰 내용을 바탕으로 요구를 추출하는 Interview가 있으나 이해관계자들의 비협조, 애매모호성 단어, 과장, 누락의 위험이 있다. 또한 What과 How에 대한 프레임을 작성하여 고객으로부터의 요구사항에 대한 스토리를 작성하는 시나리오방식이 있다. 유즈케이스가 대표적이며 이해관계자들이 제시하는 프레임을 이해하거나 시나리오를 작성해야 하는 추가 작업이 뒤따른다. 추가적으로 프로토타입(구체적이지 못한 요구사항에 대해 UI 또는 MOCKUP 등을 통해 고객과의 피드백으로 요구추출), Facilitated Meeting(이해관계자들의 모임을 구성하여 브레인스토밍을 통해 요구추출), Obervation(WBS를 통해 각 분석가별 분석대상 업무의 할당, 사용자의 비즈니스 수행, 현행시스템 이용 관찰 등을 통해 요구추출), JAD(PROTO를 통한 고객과 개발자간 밀접한 관계로 서로간 의사소통의 결과를 제시) 등이 있다.

요구사항의 관리기법은 시나리오/Goal 기반 요구사항 획득, 유즈케이스를 이용한 요구사항 모델링, 품질요구사항을 위한 자동분류, 유사도 측정을 이용한 요구사항 변경관리 등이 있다.


Business concern, critical success factor로 불리기도 하는 목표(goal)는 용어적으로 SW에 대한 전반적이고 상위레벨의 목적(objectives)들을 말한다. 목표는 SW에 대한 동기를 부여하지만, 간혹 체계적이지 않은 경우도 있다. SW 엔지니어는 목표의 가치(상대적인 우선순위)와 목표에 드는 비용을 평가하는데 많은 노력을 기울여야 한다.

SW 엔지니어는 어플리케이션 도메인에 대한 지식을 습득하거나 이해할 필요가 있다. 이것은 SW 엔지니어가 이해관계자가 표현하지 않는 암묵적인 지식이나 상충되는 요구사항 간의 필요한 조정을 하거나, 필요시 사용자의 대변자로서의 역할을 수행할 수 있게 한다.

특정 그룹만의 요구사항을 강조하려다 보면 다른 그룹의 요구사항은 희생되어 많은 SW들이 불만족스러운 주요 원인이 되기도 한다. 결국 사용하기 어렵거나 고객 조직의 문화적 또는 정치적 구조를 배제한 SW가 고객에게 인도 되었다면 SW 엔지니어는 다양한 타입의 이해관계자들의 관점을 인지하고 나타나며 다룰 필요가 있다.

요구사항은 SW가 구현되는 환경에서 발생할 수도 있다. 예를 들어 실시간 시스템의 경우 시간의 제약이 발생할 수도 있다. 이러한 제약조건들은 SW 운용성과 비용에 큰 영향을 미칠 수 있으며 계획에 대한 선택을 제한할 수 있기 때문에 반드시 능동적인 노력이 필요하다.

SW는 종종 조직의 문화, 구조, 내부 정책에 따른 선택과 같은 업무프로세스를 지원하기도 한다. 새로운 SW가 업무 프로세스 상에서 계획하지 않은 변화를 강요하지 않아야 함으로 SW 엔지니어는 이런 것에 영향을 받고 신경을 써야할 필요가 있다.

요구사항의 정의에 있어서 이슈가 될 수 있는 것은 기능적 요구사항(Functional Requirement)과 비기능적 요구사항(Non-functional Requirement)의 구분이다. 기능적 요구사항은 고객 요구사항중에 수행될 기능과 관련되어 있는 입력과 출력 및 그들 사이의 처리과정이나 목표로 하는 제품의 구현을 위해 SW가 가져야하는 기능적 속성을 의미한다.

비기능적 요구사항이란 제품의 품질 기준 등을 만족시키기 위해 SW가 가져야 하는 성능(응답시간, 처리량 등), 사용의 용이성, 신뢰도, 보안성, 운용상의 제약, 안정성, 유지보수성 등과 같은 행위적 특성으로 시스템의 기능에 관련되지 않는 요구사항들을 의미한다.

요구사항의 정의는 요구사항 분석단계의 비즈니스 모델링을 통해 수집된 사용자의 기능적 요구사항을 정형화하고 비기능 요구사항에 대해 체계적으로 분류하고 명세화 해야 한다. 또한 구축할 시스템의 범위와 개발 우선순위를 정해야 한다.

요구사항 분석단계에서 가장 중요한 산출물은 요구사항 정의서다. 요구사항 정의서는 프로젝트의 생명주기 내내 사용됨으로 시스템의 목표에 대한 구체적인 내용이 기술되어야 한다. 또한 요구사항 정의서는 사용자와 프로젝트 팀의 중요한 의사소통도구로 사용됨으로 최대한 쉬운 용어로 기술되고 기술된 내용은 서로 합의 되어야 한다.


아울러, SWEBOK(Software Engineering Body of Knowledge)에 따르면 요구사항은 프로세스를 통해 추출되고 분석되어 명세한 후 확인한다고 되어 있다. 기본적으로 요구사항에 대한 정의와 제품과 프로세스에 대한 정의 기능과 비기능의 구분, 창발성 속성(Emergent Properties), 정량화, 시스템 요구사항과 SW요구사항의 분리를 정의한 후 요구사항의 단계를 밟아 나간다.

프로세스단계에서는 모델과 역할을 분배하고 지원과 관리에 대한 부분 그리고 품질 및 향상에 관한부분을 정의한 후 추출과 분석, 명세, 확인 단계를 거치게 되며, 프로세스 반복에 대한 부분이나 변화관리, 속성, 추적, 측정과 관련된 부분은 전체적인 고려사항에 포함시켜 도출해야한다.


SW프로세스 인증제도(이하 SP인증)

우리나라는 SW프로세스의 중요성이 인지되고 확대됨에 따라 정보통신산업진흥원 SW공학센터를 중심으로 한국형 중소기업 대상의 SW프로세스 인증제도(이하 SP인증)를 추진하고 있다.

SP인증은 SW기업과 개발조직을 대상으로 SW개발 프로세스 품질역량 수준을 심사해 등급을 판정하는 제도로 2009년부터 추진되어 왔다. 한국형 SW프로세스품질인증모델은 미국 카네기멜론에서 개발한 CMMI의 25% 비용으로 인증을 받을 수 있지만 영세 SW기업을 대상으로 하기엔 비용부담이 컸던게 사실이다. 심사비용은 저렴하지만 인증 획득을 준비하는 필요한 컨설팅 등 추가적인 비용들이 발생하기 때문이다. 또한 인증 획득율도 69% 수준으로 중소SW기업이 SP인증을 획득하기란 쉽지 않은 일이었다.

< SP인증 획득 기업 수(2013년 9월말 기준) >



2013년부터 정부(정보통신산업진흥원 SW공학센터)에서 인증을 획득한 기업을 대상으로 심사비의 50%를 되돌려 주겠다고 하자 인증 신청기업이 늘어났다. 이는 그동안 심사비용 문제로 SW기업들이 고민을 했다는 방증이기도 하다.

올해부터 SP인증을 기업의 관점이 아닌 발주자의 관점에서 가점을 주기로 결정함에 따라 안전행정부가 기술평가항목에 SP인증 획득여부를 반영했고, 방위사업청이 무기체계 연구개발사업 제안서에 SP인증 기업을 우대한다는 내용을 명시했다.

한국형 SW프로세스품질인증모델은 2006년 개발되어 시범사업을 통해 검증하고 SW산업진흥법 개정을 통해 SW프로세스 품질인증제도로 발전하게 되었다. SW가 타산업과 융복합화되며 보다 복잡해지고 있어 SW품질이 각종 제품이나 서비스의 경쟁력을 좌우하는 핵심요소로 부각되었기 때문이다.

SP인증모델은 프로젝트와 조직의 관점으로 구성되어 국내 SW기업의 환경특성에 적합한 SW프로세스 역량수준의 심사체계를 마련하고 프로세스 기반의 SW프로젝트 완성도 제고에 중점을 두고 있다. SP인증은 SW프로젝트의 효율적인 개발, 관리 능력을 심사(2등급)하고 조직 프로세스 표준화 및 관리, 프로세스 개선능력을 심사(3등급)하는 구조로 구성되어 있다.

< SP인증 등급별 평가요소 >

1등급은 SW프로세스 개선이 필요한 단계, 2등급은 개별 프로젝트를 수행하기 위해 필요한 프로젝트 차원의 프로세스가 수립되고, 이를 기반으로 프로젝트를 통하여 성공적으로 프로젝트를 수행 할 수 있는 역량수준으로 정의되며, 3등급은 조직의 프로세스 체계를 정의하고 정량적인 데이터 관리를 통해 조직 차원의 프로세스를 개선하고 발생되는 문제의 근본원인을 해결함으로써 일관된 품질수준의 프로젝트 수행이 가능하며 지속적으로 프로세스를 개선 할 수 있는 역량수준으로 정의되고 있다.

< SP인증모델 프레임워크 >


< SP인증모델의 주요내용 >

2016년 1월 22일 금요일

회원정보 업데이트 이벤, 1/21(목)~2/15(월)

SW공학이 필요한 근본적인 현상

프로젝트 성공에 대한 고민_SW프로젝트가 항상 요구하는 것은 비용의 증가 없이 적시에 끝나는 것이다. 하지만 현실에선 이 부분을 달성하기 어렵다는 것을 통계나 상황을 통해 인지할 수 있다.

프로젝트가 실패하는 것은 드문 일이 아니기 때문에 예산과 일정이 충족된 경우에도 품질에 대한 궁금증은 남는다. 프로젝트의 성공은 세가지 구성요소(비용, 납기, 품질)를 평가해야 한다. 그렇지 않다면 프로젝트는 실패할 수도 있다.

프로젝트의 실패 이유는 여러 가지가 있지만 원인은 무한할 수도 있다. 80/20법칙(파레토법칙)을 적용할 경우 실패의 가장 일반적인 이유는 아래의 표에서 찾을 수 있다.


프로젝트 관리자는 여러 자원과 관점에서 활동들을 모니터링 해야 하고 그 구성원들도 프로젝트의 성공을 위해 여러 가지 활동들을 추진해야만 한다. 하지만 그들만의 방식으로 또는 경험으로만 프로젝트를 진행시킨다면 프로젝트의 성공을 보장할 수 없게 된다.

웹개발 저널지인 ‘codediesel’에 따르면 SW프로젝트가 실패하는 10가지 이유는

① 불완전한 요구사항
② 불명확한 커뮤니케이션
③ 자원부족
④ 비현실적인 목표
⑤ 요구사항의 변화
⑥ 잘못된 계획
⑦ 엉성한 개발사례
⑧ 형편없는 보고
⑨ 미숙한 기술의 사용
⑩ 출시 압력이라고 한다.

이러한 상황들을 해결할 수 있는 것이 바로 SW공학이다. 물론 기업정책상의 개선 또는 엔지니어의 능력 향상이 표면위로 부상할 수 있지만 프로젝트의 성공적 추진을 위한 전제가 바로 SW공학이다.

개발과정에서의 고민_또한 SW프로젝트를 잘 이끌어 나가기 위해서는 상대 또는 자신과 신뢰가 중요하다. 불신이란 공포와 무지에 뿌리를 두고 있지만 다르게 생각하는 것의 시작이 바로 불신일수도 있다. 이러한 불신을 없애는 방법, SW개발 프로젝트를 추진하기 위한 불신을 상쇄시키고 불신의 단계에서 흐름을 타고 프로젝트를 마무리 할 수 있게 믿음을 주는 바로 그것이 SW공학이 필요한 이유다.


자료 : http://abdulazeem.wordpress.com/2010/02/21/software-developer-life-cycle/

2016년 기업용 소프트웨어에 대한 예측

디지털 시대에 IT의 중심인 소프트웨어는 기업경영에 있어서 매우 중요한 역할을 담당하고 있다. 그렇다면, 기업용 소프트웨어에 대해 전문가들은 어떤 변화를 예측하고 있을까? 기업현장에 있는 전문가와 경영자의 의견은 5가지로 요약되고 있다.

  1. 소프트웨어 기반의 보안 솔루션은 이제 안녕을 고할 것이다. 소프트웨어에 의한 보안 시스템은 2가지 큰 취약성을 드러내고 있다. 우선, 많은 보안 소프트웨어들이 서로 연동되어 작동되기 보다는 독립적으로 움직이다 보니 상호 충돌을 피할 수 없고, 최신 보안 문제에 대해서는 해결 능력이 떨어지는 경향이 있다. 이런 이유로 소프트웨어 정의 보안 솔루션은 변화가 필요하다.
  2. 소프트웨어에 문제가 생기면 이제는 모두의 문제가 된다. 이제 소프트웨어는 CIO, CTO의 문제만으로 귀결되지 않으며, 경영 리더십 전반에 걸친 문제로 이어진다. 즉, CEO를 비롯한 고위 경영진(C-suite: CFO, CMO, COO 등) 모두의 책임으로 이어진다.
  3. 기업의 대규모 프로젝트에서 Agile development transformation이 실현될 것이다. 75%의 기업이(미국의 경우) Agile 방법론을 도입했다고 하지만 그간 규모 있는 프로젝트에서 주시할 만한 성과는 만들어지지 않았다. 2016년은 기업 전반에 영향을 주는 프로젝트에서 Agile 방법론이 적용된 사례를 만날 수 있을 것이다.
  4. 소프트웨어 개발자 수급 부족은 지속될 것이다. Google, Uber, Amazon 같은 기업으로는 SW Engineers가 블랙홀처럼 빨려들어가겠지만, 그렇지 않은 규모의 개발 회사와 Non-IT 부문에서의 소프트웨어 개발 인력 수급은 용이하지 않다. 
  5. 소프트웨어 개발은 Cloud를 향하고 있다. 웹 기반 어플리케이션 부터 소프트웨어 유지보수, 패칭, 업데이트 등 부가가치 사업까지 비용절감과 유집보수 편리성 측면에서 Cloud를 이용하지 않을 이유가 없다. 

이상에서 소프트웨어의 중요성이 기업에서 더욱 커져가는 것을 느낄 수 있다. 그리고, Agile 기반 개발 성숙도의 향상과 함께 우수 소프트웨어 개발 인력의 수급이 필요함을 알 수 있다.

2016년 1월 21일 목요일

SW개발자가 선택할 수 있는 미래의 직군


2016년도 SW컴퓨팅산업원천기술개발사업(GCS:Global Creative SW)



□ 사업목적: 글로벌 Top 수준의 잠재성이 있는 SW전문 중소‧중견기업 주관의  R&D과제를 지원하고 글로벌 시장 성과창출 유도


□ 지원대상 분야: 소프트웨어 관련 전분야


1. 지원내용


  • 과제주제는 SW 관련 전분야로 신청기관이 자유롭게 선택
  • 제출한 사업계획서가 상기 내용(과제별 정부출연금 10억 이하 등)을 만족하지 못하는 경우 접수 취소 또는 사전지원제외 될 수 있음
  • 과제별 지원금액은 연간 10억원 이상(1차년도 신청한도 : 10억∼88억)으로 신청 가능하며 평가결과에 따라 지원금액은 조정 될 수 있음. (총 정부출연금 175억원 내외 / 2년)
  • 1차년도 사업비예산(88억)은 ‵16년 예산 편성 심의결과에 따라 일부 조정될 수 있음


2. 주관기관과 참여기관의 신청 자격

주관기관 : 중소 ‧ 중견기업


  • 주관기관으로 신청하는 기업은 접수마감일 현재 기업부설연구소 또는 연구전담부서*를 보유(접수마감일 기준)하고 있는 법인사업자이어야 함.
  • 기존 R&D 참여제한 조건 외에 다음 각 항목 중 하나 이상 만족
      • SW관련 최근 3년간 평균 매출액 30억원 이상 또는 수출 3억원 이상
      • SW관련 전년도 매출액 30억원 이상 또는 수출 3억원 이상

    참여기관 : 기업, 대학, 연구기관, 연구조합, 사업자단체 등 관련 규정*에 해당되는 기관

    • 외국 소재 기관(기업, 대학, 연구소 등)의 경우 참여기관으로만 사업 참여 가능함