기능적, 비기능적인 조건들을 포함하는 명세서를 만드는 것
( 비기능적 조건 : 초당 몇명까지의 접속자를 커버할 수 있는지 등 )
설계와 개발
고객의 요구에 맞게 개발되었는지 검증
프로그램의 에러여부는 검증이 아닌 development(개발)의 영역이다
<고객에게 인도>
유지보수
➡️ 개발하는 시스템의 특성에 맞는 SW공학 기법을 사용하며, 각 기법에 따라 위의 단계에서 몇개의 단계가 더 추가될 수도 있다.
다양하고 이질적인 환경들에서도 잘 돌아가야함
heterogeneity로 인해 legacy system과 함께 사용하기도
legacy system은 구식의 원래 사용하던 시스템을 말한다
기존에 계속 사용하던 시스템이므로 성능이 검증됨
비즈니스, 사회가 급변하기 때문에 sw도 그에 따라 빠르게 변화해야한다.
우리의 삶에 점점 밀접한 관계를 가지기 때문에 높은 보안, 신뢰도를 필요로 함
다양한(wide range) scale에 맞는 sw를 개발해야한다
- IoT등의 매우 작은 임베디드 시스템 부터 클라우드 베이스의 매우 규모가 큰 시스템까지 다양한 range의 scale이 존재한다.
Software Engineering methods는 type of application 에 따라 다르게 사용된다
local computer에서만 돌아가면 되는 application sys으로, 네트워크에 연결될 필요가 없다
서로 떨어진 지역에서 본인의 pc나 terminal을 가지고 접근하며, 웹 어플리케이션등을 포함한다. 즉, 네트워크 연결을 고려해야한다
하드웨어 디바이스를 control하고 manage하는 control system
보통 임베디드에 많이 사용됨
request들을 모아서 한꺼번에 일괄로 처리
고도의 계산보다 실감나는 그래픽, 실시간성등이 더 중요시 된다
계산집약적
센서들의 데이터를 수집하여 다른 시스템에게 보내는 시스템
여러 다양한 시스템들로 이루어진 시스템
SW에 따라 요구하는 바( 특징 )이 다 다르다
빠른 개발이 가능해지고, 기존의 sw는 충분한 디버깅을 거쳤기 때문에 이미 '검증'이 됨
고객(회사)의 정보를 비밀로 유지해야하며 유출해선 안된다
자신의 능력 밖의 일을 하지 않도록 한다
고용주의 특허 등 그들의 지적재산권을 지켜주어야한다
고용주의 컴퓨터로 게임을 하거나, 제공된 디바이스를 사적으로 사용하지 않는다.
ACM/IEEE 에서 정의한 소프트웨어 공학 작업 행동 강령
- 대중의 이익에 부합하도록 행동해야한다
- 대중의 이익에 부합하되 고객과 고용주의 이익이 최선이 되도록 한다
- 수정이 가능하도록 ( 유지보수가 가능하도록 ) 높은 전문 표준을 준수해야한다
- 자신의 전문적인 판단으로 정직성과 독립성을 유지해야한다
- 윤리적 접근법에 따라 진행해야한다
- 최소한 남들에게 피해를 주는 소프트웨어를 만들지 않아야한다
- 자신들의 동료에게 공정하고 협력적이어야한다