선배들과 주변에서 워낙 재미없는 수업라고 하길래 걱정을 많이 했는데 첫 시간이라서 그런가 아직은 괜찮았다.
(2배속으로 돌리긴 했다)
자료들이 거의 과거거라서 좀 아쉬웠다.
Success or Failure of Software Projects
소프트웨어 프로젝트는 실패하는 경우도 많고 규모가 커질 수록 더 그런다.
버그로 인해 일어난 사건사고들에 대해 언급했다. 요새 읽고 있는 '역사 속 소프트웨어 오류' 책에 나온 내용도 많아서 좀 흥미로웠다.
Software Crisis, 소프트웨어 위기
이를 해결하고자하는 게 소프트웨어 공학의 목표이다.
즉 developing(개발), Operating(운영) and Maintaining(유지보수) 에 있어 quality, cost, time 을 좋게 내는 거다.
소프트웨어 공학은 점차 중요해지고 있다. 과거보다 소프트웨어의 비중이 커지고 이에 따른 개발 비용도 커지고 있다. (자동차 자율 주차 프로그램)
소프트웨어 공학에 영향을 주는 요인
- 소프트웨어의 특성
- 소프트웨어 개발 프로젝트의 특성
- 소프트웨어의 종류
- 소프트웨어의 크기
- 제작과 습득 모드
COTS(Commercial off-the-shelf, 만들어져 있는거 조립) vs Custom-built(코드 한줄 한줄 제작)
- 소프트웨어의 특성
: Schedule, Cost, Quality, Management -> 보이지 않기 때문에 이해가 어려움
- 소프트웨어 개발 프로젝트의 특성
:에러가 코딩으로 날 거 같지만 그렇지만도 않다.
설계할 때 오류가 유지 보수가 될 때 심해진다. 빨리 발견할수록 비용이 적게 든다.
- 소프트웨어의 종류
: 이에 따라 규모와 복잡도가 달라진다.
시스템 소프트웨어인가 실시간(Real-Time) 소프트웨어 등등인가에 따라 달라짐
실시간 소프트웨어는 strict time constraints , 엄격한 시간이 요구 되기 때문에 어렵다.
임베디드 소프트웨어는 대부분 실시간 소프트웨어이다.
- 소프트웨어의 크기
버전에 따라 크기 커지기도 함
SLOC(Source Lines of Code) 을 측정하는 방식에는 두 가지가 있다.
Physical : 물리적인 수로 주석까지 포함해 다 센다고 생각하면 된다.
Logical : 기능 수를 세는 거
- 제작과 습득 모드
소프트웨어 공학은 다양한 측면을 고려해야한다.
V&V(Verification and Validation)
Quality assurance (품질 보증)
Projct management
Configuration management (버전 관리)
CASE(IDE,Modeling tools, Testing tools,,,,) 다양한 활동을 지원하는 도구
등등
소프트웨어 오해
- 테스트 전에는 평가가 필요하지 않다(x)
- 다양한 메뉴얼이 필요하다.( 관리, 요구사항, 설계, 사용자 메뉴얼 등등)
- 요구사항은 그때 그때 말하면 된다(x) -> 처음부터 상세히 말해서 구체화해야한다.
- 소프트웨어는 변경이 쉽다 -> 하드웨어보단 괜찮지만 돈이 많이 든다. .
등등
조금 지루한 수업이 될 거 같지만 전공 필수니깐 열심히 해야겠다!
오늘은 전반전으로 소프트웨어 프로젝트에 관한 이야기를 나눴다.
그럼 다음 수업도 열심히 듣자.
'공부 > 소프트웨어공학' 카테고리의 다른 글
Use Case 과 Actor (0) | 2020.09.28 |
---|