소프트웨어를 개발하기에 앞서 우선 어떤 기능을 구현해야 하는지 일정을 계획해야 한다.여기서 우리는 작업 순서를 결정하고, 개발 기간, 순서, 필요한 자원 등의 일정을 계획한다. 작업 분할 구조도 소개 (WBS: Work Breakdown Structure) 일정을 계획할 때 작업 분할 구조도를 사용하면 좋다.이것은 프로젝트 목표를 달성하기 위해 필요한 활동과 업무를 세분화하는 작업으로, 프로젝트 구성 요소들을 계층 구조로 분류한다.이렇게 계층 구조에서 최하위에 세분화되어 있는 작업들을 작업 패키지라고 한다. 이와 같은 표를 보면서 사용자와 개발자 간의 의사소통 도구로 활용한다. 보다싶이 프로젝트 업무 내역을 가시화할 수 있어서 관리하기도 편하다. 이것으로 프로젝트에서 각 팀원의 책임과 역할이 분..
개발을 하려면 계획을 세워라... 너무 당연한 말인것 같아서 좀 유치하긴 하다. 그런데 왜 계획을 세워야 해? 라고 말해보면 오히려 또 당연한 말 밖에 못한다.우리는 보통 계획을 세울 때 세부적으로, 체계적으로 계획을 세우지 못한다.우리의 머리를 너무 믿은 나머지 나중에 후회하는 일이 생기기 마련이다...우선 왜 계획을 세우는지 먼저 알아보자. 계획을 세우는 이유만약 계획을 세우지 않았을 때 어떤 일이 일어나길래 굳이 계획을 세워야 할까.나에게도 익숙한 모습이다. 방학숙제를 몰아서 하다가 예상치 못했던 돌발 위험 상황과 비용cost이 생겨서 정상적으로 마무리하지 못하는 경우가 있었다. 소프트웨어도 당연하다.우리가 만드려는 소프트웨어가 다른사람이 이미 만들은 제품인지, 혹시 일어나면 곤란한 돌발 위험이..
Agile 프로세스 모델이란 agile 방법론은 소프트웨어 하나를 만드는데 너무 시간이 오래 걸린다고 해서 나온 모델이다. 확실히 옛날엔 요구사항같은 문서작업이 많았다고 한다.(waterfall 모델이 기억나는가)이렇게 쭉 우직한 방식의 방법론들을 쓰다가 2000년대에 스마트폰 나오고~ 뭔가 자꾸자꾸 나오니까 더 유연하고 민첩하게 대응할 수 있는 방법론으로 문제 발생 시 바로 대응할 수 있었으면 좋겠다~~ 해서 개발한 방법론이라고 한다.이전엔 문서 중심이었다면, agile 개발 모토는 프로세스보다 사람들간의 상호 소통을 중시하겠다, 프로세스가 정해지면 무조건 따르기보다 대화로 적절히 변경하면서 소통하겠다는 마인드를 갖고 있다. 그래서 agile 방법론이란, 소프트웨어를 고객에게 빠르고 지속적으로 전달..
소프트웨어 공학이란공학은 사람들에게 유익함을 주기 위해 만들어진 분야이다.하지만 이러한 모든 것을 공학이라 부르진 않는다. 시간과 비용이 들어야 비로소 공학이라 말할 수 있다. 그렇다면 소프트웨어 공학은 무엇일까?시간과 비용이 포함된 소프트웨어를 소프트웨어 공학이라고 말한다.효율적으로 개발하기 위해 생산성을 높이는 작업들, 최종적으로 사용자 만족을 위한 것들이라 말할 수도 있다.이런 효율적인 개발을 위해서 개발의 각 단계를 나눠서 관리해야 할 필요가 있다. 개발 과정의 생명 주기기본적으로 소프트웨어의 개발 생명주기란, 계획 단계에서 유지보수 단계에 이르기까지 일어나는 일련의 과정이다.생명주기는 몇 달, 몇 년이 걸릴 수도 있다. 그냥 만든다고 끝나는 것이 아니라 유지보수가 끝나서 소프트웨어를 사용..
이게 무슨 수업이냐면, 소프트웨어 개발에 필요한 각 단계별 프로세스를 배우는 과목이다.또한 수업에서 배운 개발 프로세스를 이용하여 소프트웨어 개발 프로젝트도 진행할 예정이라고 한다...(안돼) 결국 이 수업의 핵심은 3가지이다.소프트웨어 개발에 엔지니어링 식의 접근 방법을 적용효율적인 방법을 찾아본 후, 이미 밝혀진 원리를 적용(절차적인 프로그래밍 설계방법 >> 구조적 방법, 객체지향 프로그래밍의 설계방법 >> 객체지향 방법)개발 전 단계에 대한 모범 사례를 소개 (관련 도구, 계획, 요구분석, 설계, 코딩, 유지보수, 테스트) 그 과정에서 사례와 프로젝트, 디자인패턴 등등.. 여러가지 방법론을 배운다고 한다. 아주 맛보기로 살짝 어떤걸 배우는지 발만 담가보자 다음은 H/W 실패 곡선(욕조 곡..