Software Engineering 7

자동차 소프트웨어가 어려운 이유

1. 다양한 기술 특성 기계, 전기, 전자, 화학, 생명공학, 소프트웨어 등의 다양한 기술들이 통합되어 완성되는 시스템이기 때문에 요구사항이 중요함 자동차 분야는 비즈니스적인 이해와 더불어서 협력해야 하는 기술 도메인이 다양함 2. 시스템의 규모 자동차가 지능화 되어 가면서 시스템의 복잡도는 기하 급수적으로 증가 1억만 라인, 1억 5천만 라인.. 점점 늘어나는 규모와 복잡도 3. 협업 관계 업무의 세분화 및 분업화로 OEM과 Tier 간의 협업 관계 증가 자동차 메이커 (OEM)에서 시스템 레벨에서의 Tier1 그리고 Sub 시스템 (또는 컴포넌트, 엘리먼트)의 Tier 2 .. 등 다양한 이해관계로 구성되어 있음 4. 법, 규제 강화 자동차 시스템은 인간의 생명, 안전보장 그리고 환경 보호에 민감한 ..

단위 테스트, Unit testing

단위 테스트 (Unit testing)은 설계된 모듈이 정확히 구현되었는지 확인하고, 모듈과 같은 하나의 소프트웨어 구성요소나 소프트웨어 구성요소의 집합이 프로그램의 요구사항에 맞는지 확인하는 테스팅 [IEEE 1012-1998 VVP] Testing conducted to verify the correct implementation of the design and compliance with program requirements for one software element (e.g., unit, module) or a collection of software elements. 단위 테스트 (Unit testing)에 한해서는 결함 발견의 목적 보다는 기능의 정상 동작을 확인하는 것이 더 중요합니다. 개..

SW Maintenance

소프트웨어 릴리즈 release, delivery 이후 수행되는 활동에 대해서는 Maintenance 유지보수로 보고 있습니다. Maintenance 임에도 요구사항도 변경될 수 있고, 설계부터 검증까지 이뤄질 수 있습니다. The main purpose of software maintenance is to modify and update software applications after delivery to correct faults and improve performance. 그럼 SW의 유지보수는 왜 이뤄질까요? - 사용자들의 변경 요구 (변심 포함) - 환경의 변화 - 새로운 기술의 등장 - 버그 수정 ... Software maintenance must be performed in order t..

Software Process model

소프트웨어 프로세스란, 소프트웨어 제품이 만들어지는 단계를 의미합니다. Source: https://erbis.com/blog/6-phases-of-the-software-development-life-cycle/ 1. 요구사항을 분석하고 = 무엇을 해야 하는지, 어떤 기능을 대상으로 해야 하는지 정의하고 2. 설계하고 = 요구사항을 어떻게 (How) 구현할지, 그리고 전략적인 부분들도 고려하고 3. 개발한다 = 요구사항과 설계를 고려해서 소프트웨어를 구현하고 (예: 소스코드) 4. 테스팅 = 앞서 정의된 사양대로 개발되었는지 (Verification), 버그는 없는지 확인하고 5. 배포한다 = Release, Delivery 6. 모니터링하고 유지보수한다. 대게 일반적인 소프트웨어 프로세스라고 하면 위..

Time to market, TTM

제품 구상(Conception) 부터 시장(Market)에 내놓기 까지 (release)의 시간 길이를 Time to Market, TTM이라고 부릅니다. 소프트웨어 공학이, 자동차 분야에서 점점 소프트웨어의 중요성이 커지는 이유 중에 기존에 배포(release) 된 소프트웨어의 유지보수에도 체계적인 접근, 변경 시 대응, 짧은 기간/시간에서 제품을 개발해야 하는데 시장에서 많은 요구사항들로 개발 시 고려해야 하는 요인들이 늘어나고 있습니다. 하기 그림을 포함해서 잘 정리된 웹사이트를 링크합니다. 참고하시기 바랍니다. Source: https://www.tcgen.com/time-to-market/#:~:text=Time%20to%20market%20(also%20called,the%20first%20u..

Software engineering definition & necessary

소프트웨어 공학의 정의는, 소프트웨어의 품질 향상과 생산성을 향상 시키기 위하여 사용자의 요구사항을 체계적으로 분석하여 설계 및 구현, 구현된 시스템의 시험 그리고 유지보수 및 폐기 까지의 소프트웨어 전 수명주기 간에 걸쳐 이루어지는 체계적인 접근법을 말한다. (Summerville, in "Software Engineering") 소프트웨어 개발, 운영 및 유지보수에 체계적이고 훈련이 잘 된 정량적인 접근 방법을 적용하는 것으로, 소프트웨어 개발 및 관리를 공학적으로 접근하는 것을 말한다. (Definition by IEEE Computer Society) Defines software engineering as the application of a systematic, disciplined, whic..

Difference between Program and Software

프로그램과 소프트웨어의 차이를 아래와 같이 정의할 수 있습니다. 출처: https://www.javatpoint.com/program-vs-software#:~:text=Definition-,A%20computer%20program%20is%20a%20set%20of%20instructions%20that%20is,to%20perform%20a%20specific%20task.&text=Programs%20do%20not%20have%20further%20categorization. Difference between program and software - javatpoint Difference between program and software with list of top differences and..