소프트웨어 공학 9

소프트웨어 공학에서 '공학' 에 대한 생각해보기

공학 Engineering은 많은 공과대학에서 배우는 여러 학문들의 범위에서 비용과 현실적인 문제들을 ... (생략) 뭐 이런 얘기를 하고자 하는 건 아닙니다만, 우리가 흔히 오해하는 부분들을 다루는 내용이 나와서 몇 자 적어봅니다. 동일한 입력이 들어가고, 동일한 출력이 나온다. 동일한 입력이 들어갔는데, 동일한 출력이 나오지 않으면 그것이 공학인가? 현실적으로 네!, Yes! 그럴 수 있습니다. 공학은 현실적인 문제를 다루기 때문입니다. 현실적(Real, Fact 등)이지 않은 부분까지 집중해서 다룬다고 하면 학문, 자연과학의 범위에서 더 중점적으로 논의가 되어야 한다고 생각합니다. (이런 생각은 어디까지나 개인의 지식과 의견, 가치관, 경험 등에 따라 달라질 수 있습니다. 제 생각이 그렇다는 겁니다..

SW 공학 기초 인터넷 강의 - 오답 노트

Q1. 소프트웨어 프로세스는 소프트웨어를 만들기 위해 무엇을 어떻게 해야 하는지에 대한 가이드이다. 정답: 소프트웨어 프로세스는 소프트웨어를 만들기 위해 무엇을 해야 하는지에 대한 가이드이다. 어떻게에 대한 내용은 포함하지 않는다. 내 생각: 소프트웨어 + 프로세스, 프로세스를 What으로만 봐야하는 것일까? 프로세스는 가이드라인, 노하우를 포함할 수 있을텐데 너무 일반화된 접근에서 생각한 것은 아닌지 생각된다. 개인적으로는 무엇을 (what), 어떻게 (How) 그리고 When, Who, Why, (Where)를 충분히 포함할 수 있다고 생각한다. Q2. 비정상적인 상태나 환경에서 시스템이 제 기능을 수행할 수 있는 정도를 의미하는 품질 속성은? 정답: Robustness 비고: 난 Availabili..

단위 테스트, 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)에 한해서는 결함 발견의 목적 보다는 기능의 정상 동작을 확인하는 것이 더 중요합니다. 개..

Need, Wants, Requirements

요구사항(Requirements)을 알기 위해서 아래를 먼저 얘기해본다. Want는 구체적으로 원하는 것, 필요(Need)를 만족시킬 수 있는 어떤 제품이나 서비스 Need는 기본적으로, 근본적으로 어떤 결핍을 느끼는 것, 그리고 사람에게서 공통적으로 나타나는 현상 출처: https://keydifferences.com/difference-between-needs-and-wants.html 수많은 문제를 해결하는 과정으로 생각하면, 문제는 Wants, Needs를 말하는 것이고 문제를 해결하는 해결책 Solution은 Requirements 인 것이다. Wants --> Needs --> Requirements 출처: https://blogs.managementconcepts.com/2020/09/16/..

Why difficult to perform the Verification(Test)?

※ 해당 글은 "SW 요구사항 개발" 강의를 들으면서 메모하고 싶은 내용을 기록하고 공유하기 위함입니다. 저작권 및 위배가 되는 경우 해당 글은 별도의 공지 없이 삭제될 수 있습니다. 가급적 위배가 되지 않는 내용에서 글을 작성합니다. 검증(테스트)이 어려운 이유는? 이유는 요구사항을 기반으로 해야 하기 때문이다. 즉, 요구사항이 불명확거나, 요구사항이 모호하거나, 요구사항이 일치하지 않거나 충돌이 발생하는 등 모두를 포함해서 검증(테스트)가 어려운 이유이다. 위 ASPICE PAM3.1 그림에서의 V 사이클 그림을 보면 요구사항을 분석하면서 System Qualification Test 단계가 수행된다. 즉 검증(테스트)의 수행이 개발 초기에도 이뤄져야 하고 할 수 있다는 것이다. 그런데 요구사항이 실..

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. 모니터링하고 유지보수한다. 대게 일반적인 소프트웨어 프로세스라고 하면 위..

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..

CMMI for Development v1.3 교육

살다보니, 내가 소프트웨어 시스템 품질을 하기 위해 교육을 들으러 왔다. 교육명은 Introduction to CMMI for Development v1.3이다.강사는 TQMS의 이민재 대표이다. 현재 근무중인 곳이 소프트웨어 설계 및 개발이다보니, 내가 있는 QA팀에서는 소프트웨어 개발 품질을 관리할 수 있는 프로세스로 CMMI을 채택하였다. 현재 level 3을 취득하여 내재화 중이다. CMMI가 무엇인가? 나도 이번에 알게되었다. 아니 2달전부터 접하고 있었지만, 정의를 내릴 수는 없었다. 잘 모르는채 말하는게 가장 무서운 것이니까. CMMI는 'Capability Maturity Model Integration'의 줄인말로, '조직의 프로세스 개선 활동을 효율적으로 지원하기 위한 모델이다. (이민..