요구사항 → 설계 → 개발 → 테스트
설계 과정 주요도 변천사
개발 → 옛날에는 개발 인원들이 별로 없어서 중요
테스트 → 개발된게 이상한 경우가 많아지니 테스트 중요
설계 → 비슷한 제품의 개발로 코드를 수정해야 하는데 스파게티 코드로 인해 코드를 바꾸는 것이 어려웠기에 설계 중요
요구사항 → 최근에는 요구사항이 잘 되어 있는게 과정에서 가장 도움이 된다 보기에 중요해짐
시장 분석 & 고객 분석 → 가장 최근에는 시장 분석 후 요구사항 설계가 개발 후 성공에 도움이 된다 생각하게 됨, 필요 없는 건 만들어도 쓸모가 없다 ⇒ 코디네이터 : 고객의 요구사항과 개발자가 만들 수 있는 수준 그 갭을 매꾸고 조절하는 역할 ⇒ 개발자의 중요한 역량이기도 하다. ⇒ 나중에 어필할 때 쓸 수 있을만한 내용
점진적 개발이 대세 : 1에서 100을 한 번에 만들지 않는다. 1에서 10 주요 기능 만들어서 출시 후 release하여 사람들 반응을 보고 점진 개발, pivot(고객 요구사항 반영) 중에 하나를 선택한다.
요구사항은 고객이 실제로 원하는 것이다.
user : 사용자(고객 외에도 이 서비스를 사용하는 사람까지 포함, customer를 포함하는 개념 ex) 보험설계사)
customer : 고객(실제로 이 서비스를 위해 비용이나 시간을 지불하는 사람)
stakeholder : 이해관계자(소프트웨어 관련된 모든 사람들 : 기획, 고객, 보험설계자, 투자자 … )
problem description(고객) : 고객 언어로 표현된 해결할 문제(구체적이지는 않을 수 있음), 고객 SW에 대한 승인 조건(이러이러한 기능을 추가해주세요)
solution specification(설계자) : 제약 조건하에 고객 니즈 충족 방법 고려, 제품/서비스 만족을 위한 특성 고려
요구사항은 시간이 지날 수록 바뀌게 된다.
문제와 해결점 간의 갭이 있다.(고객들의 요구사항 및 이상치와 실제 제약 조건 간 차이가 존재)
⇒ 그렇기에, 요구사항은 이상치와 실제 제약 조건 간 갭을 최소화하는 것이 중요하다고 한다.
⇒ 최근에는, 새로운 기능보다 품질이 중요하다고 한다. 낮은 품질의 신기능은 오히려 기업 이미지에 손상
정의된 기능의 절반은 사용하지 않는다. ⇒ 요구사항을 잘 수행했다면 이렇게 버리는 기능을 줄이고 잘 작동할 수 있었을 것이다.
⇒ 시간적 완충 지대의 추가가 있으면 좋겠다. 일정을 70% 정도로 잡으면, 뭔가 문제가 생길 때 해결할 여유가 생기고, 새로운 시도도 가능
소프트웨어 재작업 : 초기 잘못된 구현이나 요구사항 변경으로 프로세스 또는 활동 다시 수행하는데 드는 노력
⇒ 처음에 요구사항 수정할 때는 글 줄 하나지만, 나중에 수정할 하면 처음부터 다시 바꿔야할 필요가 있다.
⇒ 개발 비용의 40~50% 차지함
⇒ 1 : 10 : 100 = 예방 비용 : 수정 비용 : 실패 비용 ⇒ 스마트 헬스 케어 같은 경우가 기존 치료 비용을 예방 비용으로 예방할 수 있는 차원에서 기존 의료 패러다임의 전환이 가능하다 ⇒ 근데 의사 권한이 너무 세긴하다. 그럼 앞으로 스마트 헬스 케어와 같은 경우 의사를 거치지 않는다는 법안이 발의된다면 스마트 헬스 케어 주식이 폭발적으로 성장할 가능성도 있겠네
헬스 케어와 같은 패러다임의 전환은 자동차에서도 일어날 것이다. 자율주행 차량이 도입된다면 저번에 봤던데로 엔터테인먼트와 같은 분야가 더 발전할 것이다. 근데 확실히 자율주행 차량은 책임 소재로 인해 완전 자율주행은 좀 애매한 거 같긴하다.
기존 프로젝트 진행한 것도 계획을 수립할 당시에 했던 내용들을 이렇게 엮어서 설명하면 좋지 않을까?
⇒ 저걸로 돈을 벌 수 있을까?라는 생각이 들게 만드는 것이 좋지 않을까
요즘 개발자 트렌드 : 고객의 요구사항을 액면 그대로 받아들이는 걸 넘어서, 이런 상황에서 이런 게 더 있으면 좋지 않을까?라고 추가적인 정보를 이끌어낼 수 있어야 한다. 단순 코더를 넘어서 이런 역량을 어필할 수 있다면 좋을 것 같다. ⇒ 팔팔토이와 진행한 자동화 장치 제어 직무에서 했던 내용을 바탕으로 쓸 수 있지 않을까? ⇒ 팔팔토이 관련 자소서를 작성할 때 항상 기대효과로 연간 2106만원의 원가 절감을 이끌어낼 수 있다고 했는데, 초기 설치 비용 및 제품 비용으로 어느 정도가 드는 지에 대한 정보가 없었던 것 같다. 얼마 들었었지?
CAN통신 기반 IDS 제작을 할 때 공격 대상은 B-CAN 중에서도 헤드라이트, 시트, 방향 지시등, 와이어 등으로 선정한 이유는 뭐라 해야할까? ⇒ 실제 차량을 대상으로 실험을 진행했기에 안전을 위해 정차 상태에서 진행을 했습니다. 정차 상태였기에 P-CAN을 통한 엔진이나 steering과 관련된 부분은 할 수 없었던 부분이 있습니다. 하지만, 그 중에서도 헤드라이트, 시트 ,방향 지시등, 와이어를 공격 대상으로 선정한 이유는 이러한 장치들이 운전 중 갑작스럽게 조작되었을 때 사고로 이어질 확률이 높다고 판단했기 때문입니다.
사용자 요구와 시스템 제약사항을 “추출(Elicitation),분석(Analysis),명세(Specification),검증(Vertification)”하여 정의하고 요구사항 변경관리 수행
정확한 명세 작성하여 실제 문제 해결
최근 stakeholder에 애완견, 애완묘도 추가되는 경향이 있다.
human-based activity : 사람이 기반이 되는 활동이기에 이해관계자의 비공식적 니즈를 정확히 파악해야 하고, 에러가 날 수 밖에 없다
참고) 데이터 분석 직무가 하는 일 : 크롤링이 어떻게 진행되는지 들을 수 있었다. 위쪽에서 광고로 이 모델은 “젊고, 우아하고, 단아한 느낌”이 났으면 좋겠다고 한다면, 데이터 크롤링을 통해서 사람들이 어떤 연예인을 젊고, 우아하고 ,단아하게 생각하는지 파악한 후 이 교집합을 바탕으로 광고 모델을 선택한다고 한다.
HIL, SIL와 같은 방법론을 배운 것을 자소서에 담을 수 있다면 좋을 것 같다 ⇒ 이 내용 어디 과목에서 배웠더라? ⇒ 일단, ISO26262를 차량소프트웨어엔지니어링 수업에서 배웠고, 자율주행컴퓨팅플랫폼에서 RTOS, 9.MBD에서 HIL에 대해 배웠다. ⇒ HIL은 어디서 진행한다?
Modeling and Design → Rapid Prototyping → Targeting → *Hardware-in-the-loop-Simulation → System Testing
⇒ 집에 가서 해당 내용 노트보고 복습한 다음 1번 문항에 적을 수 있다면 좋지 않을까
2번 문항의 마지막에서도 경청의 태도를 바탕으로 고객의 요구사항을 받아들이고, 이를 넘어 고객이 무의식적으로 바라지만 말하지 못한 정보들도 캐치할 수 있도록 하겠다 ⇒ 이렇게 바뀌면 좋을 것 같다.
Elicitation : 정보를 수집하고 요구사항 분석을 위한 준비
Analysis : 어떤 요구사항이 필요한지 분석
Specification : 정한 요구사항을 적는다. 정형화된 기법으로, 비정형(글,그림 자연어 ⇒ 쓰기는 쉽지만 알아듣기 힘들 수 있다), Semi(반정형)(주석 정도), 정형(코드 ⇒ 적는 건 어렵지만 오해는 없다) 방식으로 나눠서
Vertification : 요구사항 검증, 요구사항 baseline(여기까지만 하겠다고 마무리 하는 느낌)
학문적으로는 Vertification 단계가 끝나야 요구사항이라는 말을 사용한다. 그전까지는 Requirements development라고 생각하면 된다.
SW는 언제 죽거나 없어질까? → 서비스를 사용하는 사람이 없어질 때
실제로는 기대하는 만큼 활동이 이루어지고 있지 않다
최초에는 function 기능을 중시하였다
⇒ 이후에는 고객 요구사항을 중시하였다
⇒ 이해관계자
⇒ 현재는 품질 자체가 중요하다. 제대로 작동하지 않는 기능은 오히려 마이너스