강의 내용 정리/소프트웨어 공학(15)
-
소프트웨어 공학 (15), Configuration Management
Configuration Management 0. Overview 1) Configuration management란? 우리가 만들 소프트웨어 프로덕트에 들어가는 다양한 소스코드, 자원 등에 대해 유지/관리하는 것 (1) Configuration management - 소스 코드를 관리하고 변경되면 이력이나 파일도 관리하고, 이를 가지고 실제 릴리즈할 때 특정 릴리즈 버전에 대한 이력 등도 관리한다. - 소프트웨어에 들어가는 여러 것들을 버전별로 이력과 함께 관리하는 것이다. - 소스코드와 정책, 절차, 도구 등이 포함된다. - CM을 통해서 수정이 발생하면 어떤 파일에 대해 어떤 이유로 언제, 어떤 부분이 바뀌었는지, 이후 결과물과 버전을 관리할 수 있다. - 소프트웨어가 계속 개선되고 나아지면서 이볼..
2022.06.15 -
소프트웨어 공학 (14), Quality Management
Quality Management 정성적/정량적으로 소프트웨어가 도달해야하는 수준에 대한 품질 관리 - 대부분의 소프트웨어가 기능적으로 만족되었다하더라도 QA팀에서 품질이 보장된다고 도장을 찍어야지 이를 배포할 수 있다. 0. 개요 1) Software quality management - 평가 지표가 있고, 이를 달성했는지 확인한다. - 소프트웨어마다 평가 항목과 레벨이 정해진다. 일반적으로 고려해야하는 소프트웨어의 퀄리티 등을 수시로 체크하고 관리한다. 2) Three principal concerns (1) At the organizational - 어떤 소프트웨어가 되던, 우리 회사가 만드는 소프트웨어는 어떤 체계와 방침을 가지고 소프트웨어를 유지하는지 명시한다. - 체계화된 경우에는 이에 대한 ..
2022.06.14 -
소프트웨어 공학 (13), Project planning
Project planning 0. Overview 1) Project Planning - 돈을 받고 다른 사람에게 소프트웨어를 판매하는 것과 plan-based approach를 통해 개발하는 것을 가정해 이번 챕터를 설명하고자 한다. - 돈을 받고 소프트웨어를 짠다는 것은 Project planning, Quality management, Configuration management에 대한 내용은 매우 중요하다. Agile 개발 프로세스를 따른다면 위의 내용을 하는 것에 큰 의미를 두지 않을 수 있다. 그렇다하더라도 이를 반영해 스스로 점검할 수 있는 부분이 존재한다. - 제조 중심의 회사들이 소프트웨어에 적용하려고 했지만 실패했던 Man-Month 신화와 같이 돈을 받고 수직적인 구조 속에서 소프트..
2022.06.14 -
소프트웨어 공학 (12), Project Management
Project Management 탑다운에 기반한 내용이기에 최근 소프트웨어 개발 방법론인 Agile과는 다른 면이 있어 논란의 여지가 있을 수 있다. - Project Planning 이전의 단계이지만 WaterFall 방식과 Agile 방식의 차이점이 너무 크기 때문에 이를 중심으로 Project Management를 설명하고자 한다. 1. Ice break - 프로젝트는 시작된다고 해서 모두 성공하는 것은 아니고, 망해가는 프로젝트를 통해 교훈을 얻을 수 있다. 이후 이러질 Project Planning을 하는 것이 매우 어렵고 WaterFall 방식과 Agile 방식의 차이점도 매우 크고, man-month라고 하는 투입되는 사람에 대해 차이점이 있다. 또한 프로젝트가 망해가는 것에 대한 특징을 ..
2022.06.10 -
소프트웨어 공학 (11), Software Evolution
Software Evolution 소프트웨어 출시 이후 나타나는 버그를 개선해 업데이트하는 과정 0. Software change 1) Software change란? - 해당 챕터에서 기저에 놓여있는 개발 방식은 top-down, waterfall 방식이다. - 소프트웨어는 출시 이후에 끝나는 것이 아니라 놓친 부분이나 새로운 피쳐의 등장, 비즈니스 환경의 변화 등등에 의해 새로운 기능이나 피쳐, 성능에 대한 부분, 기타 등등은 반드시 필요할 수 밖에 없다. 이는 소프트웨어의 변화를 이끈다. - 테스트는 프로그램이 완벽하다는 것을 증명하진 않는다. 이는 테스트 과정에서 걸러내지 못한 것을 이끌어내곤 한다. 이는 소프트웨어의 변화를 이끈다. - 하드웨어의 변화가 소프트웨어의 변화를 이끌수도 있다. 가상화..
2022.05.26 -
소프트웨어 공학 (10), Software Testing
Software Testing 1. Development testing 1) Program testing 큰 틀에서의 프로그램 테스트 (1) 주어진 input과 output에 대한 동작이 제대로 나오는지 확인라는 것이 목적 (2) 여러 이유로 프로그램이 비정상 동작을 할 때 어떤 상황에서 오류가 발생하는지 파악하고 이를 대응하는 것이 목적 - 테스트는 다양한 사람과 단계에 걸쳐서 테스트되고, 과거의 혹은 인위적으로 만든 데이터를 투입해서 동작하는지 확인하는 과정이 존재한다. 맨 마지막 단계에서 실 사용자 일부에게 테스트를 진행한다. - 테스트를 수행함으로서 잘못된 것에 대한 에러나 비정상적인 동작에 대한 예외상황 등, non-functional 부분 등에 대해서도 확인해야한다. - 무엇을 테스트하는지에 ..
2022.05.18