* ์ํํธ์จ์ด ์๋ช
์ฃผ๊ธฐ (Software Life Cycle)
1. ์๊ตฌ๋ถ์ - 2. ์์คํ
๋ช
์ธ - 3. ์ค๊ณ - 4. ๊ตฌํ - 5. ํ
์คํธ - 6. ์ ์ง๋ณด์
6๋จ๊ณ๋ก ๊ตฌ์ฑ๋๋ฉฐ, ๋จ๊ณ๋ณ๋ก ๋ฐ๋ณต ์ํํ๋ฉฐ ์ํํธ์จ์ด์ ์์ฑ๋๋ฅผ ๋์ด๊ฒ ๋๋ค.
1. ์๊ตฌ๋ถ์
๋ง๋ค ์ํํธ์จ์ด์ ์ฑ๊ฒฉ, ๋ชฉ์ ์ ์ ํํ๊ฒ ์ดํดํ์ฌ ์ด๋ ํ ๋ฐฉ์์ผ๋ก ๊ฐ๋ฐํ ์ง, ๋ฌด์์ด ํ์ํ์ง ์์ฐ๊ณผ ์์์ ์ธก์ ํ๋ค. - ์๊ตฌ๋ช
์ธ์ ์์ฑ
2. ์์คํ
๋ช
์ธ
์์คํ
์ด ์ํํด์ผ ํ ๊ฒ, ๊ทธ๋ฆฌ๊ณ ์
๋ ฅ, ์ฒ๋ฆฌ๋ด์ฉ, ์ถ๋ ฅ์ด ๋ฌด์์ธ์ง ์ ์ํ๋ ๋จ๊ณ - ์์คํ
๊ธฐ๋ฅ ๋ช
์ธ์ ์์ฑ
3. ์ค๊ณ ๋จ๊ณ
๊ธฐ๋ฅ๋ค์ ์ํํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ ๋
ผ๋ฆฌ์ ์ผ๋ก ๊ฒฐ์ . ์ด ๋จ๊ณ์์ ์์คํ
์ ๊ตฌ์กฐ์ ํ๋ก๊ทธ๋จ, ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ์ค๊ณํ๋ค.
์ค๊ณ ๋ฐฉ์์๋ ํํฅ์๊ณผ ์ํฅ์์ด ์๋ค.
ํํฅ์ ์ค๊ณ ํผ์งํ ๋ฌธ์ ๋ค๋ถํฐ ํด๊ฒฐํ๋ฉฐ ์ ์ฐจ ๊ตฌ์ฒด์ ์ด๊ณ ๋ํ
์ผํ ๋ถ๋ถ์ ์์ฑํ๋ ๋ฐฉ๋ฒ.
์ํฅ์ ์ค๊ณ ํํฅ์๊ณผ ๋ฐ๋. ๋ํ
์ผํ ๋ถ๋ถ๋ถํฐ ํด๊ฒฐํ์ฌ ์๋ก ์ฌ๋ผ๊ฐ๋ค.
4. ๊ตฌํ ๋จ๊ณ
์ค๊ณํ ๋
ผ๋ฆฌ(์๊ณ ๋ฆฌ์ฆ)์ ๋ฐํ์ผ๋ก ์ค์ ์ฝ๋ฉ์ ํตํ์ฌ ํ๋ก๊ทธ๋จ ์์ฑ
๊ตฌ์กฐํ ํ๋ก๊ทธ๋๋ฐ
์ง์ ๋ฌธ, ์กฐ๊ฑด๋ฌธ, ๋ฐ๋ณต๋ฌธ๋ง ์ฌ์ฉํ์ฌ ์์ฑ.
์์ฐจ๊ตฌ์กฐ, ์ ํ๊ตฌ์กฐ, ๋ฐ๋ณต๊ตฌ์กฐ์ ์ ์ด๊ตฌ์กฐ๋ก ํํ.
๊ตฌ์กฐ๊ฐ ๋ช
ํํ์ฌ ์ ํ์ฑ ๊ฒ์ฆ, ํ
์คํธ, ์ ์ง๋ณด์๊ฐ ์ฉ์ดํ๋ค.
๋ชจ๋๋ฌ ํ๋ก๊ทธ๋๋ฐ
ํ๋ก๊ทธ๋จ์ ์ฌ๋ฌ ๊ฐ์ ์์ ๋ชจ๋๋ก ๋๋ , ๊ณ์ธต(๋ถ๋ชจ) ๊ด๊ณ๋ก ๊ตฌ์ฑํ๋ค.
๋๋ ๋ชจ๋๋ณ๋ก ๋ฐ๋ก๋ฐ๋ก ์ ์ง๋ณด์๊ฐ ๊ฐ๋ฅํ๋ค.
๊ฐ์ ๊ธฐ๋ฅ์ ๊ตฌํํ ๋ ๋ชจ๋์ ์ฌ์ฌ์ฉ์ ํตํด ํจ์จ์ด ๋๋ค.
5. ํ
์คํธ ๋จ๊ณ
ํ๋ก๊ทธ๋จ์ด ์ ๊ฐ๋ฐ ๋์๋์ง ํ
์คํธํ๋ ๋จ๊ณ. ์จ์ด์๋ ์ค๋ฅ๋ฅผ ๋๋ฒ๊น
ํ์ฌ ์์ฑ๋๋ฅผ ๋์ฌ์ผ ํ๋ค.
1๋จ๊ณ - ๋จ์ ํ
์คํธ(Unit Test) : ์์คํ
์ ์ต์ ๊ตฌ์ฑ์์๊ฐ ๋๋ ๋ชจ๋์ ๋ํ์ฌ ๊ฐ๋ณ์ ์ผ๋ก ํ
์คํธ.
2๋จ๊ณ - ํตํฉ ํ
์คํธ(Integration Test) : ์ ์ฒด ์์คํ
์ ํตํฉ์ ์ผ๋ก ํ
์คํธ. ์ํฅ์ ํ
์คํธ, ํํฅ์ ํ
์คํธ๊ฐ ์๋ค.
3๋จ๊ณ - ์ธ์ ํ
์คํธ : ์์ฑ๋ ์์คํ
์ ์ธ์ํ๊ธฐ ์ํด, ์ค์ ์๋ฃ๋ฅผ ์ฌ์ฉํ ์ต์ข
ํ
์คํธ
6. ์ ์ง๋ณด์ ๋จ๊ณ
์์คํ
์ด ์ธ์๋๊ณ ์ค์น๋ฅผ ๋ง์น ํ ์ผ์ด๋๋ ๋ชจ๋ ํ๋์ ๋งํ๋ค. (์ํํธ์จ์ด ์๋ช
์ฃผ๊ธฐ์ ๊ฐ์ฅ ๊ธด ๋ถ๋ถ)
์์ ํ ์ ์ง๋ณด์ : ์ฌ์ฉ ์ค ๋ฐ์ํ ์๋ฌ์ ๋ํ ์์ ์์
.
์ ์ํ ์ ์ง๋ณด์ : ์์คํ
๊ณผ ๊ด๋ จํ์ฌ ํ๊ฒฝ์ ์ธ ๋ณํ ๋ง์ถ๊ธฐ ์ํด ์ฌ์กฐ์ ์์
.
์์ ํ ์ ์ง๋ณด์ : ์ฑ๋ฅ ํฅ์์ ์ํ ๊ฐ์ ์์
.
์๋ฐฉํ ์ ์ง๋ณด์ : ํน์ ๋ชจ๋ฅผ ๋ณ๊ฒฝ ์ฌํญ์ ์์ฉํ๊ธฐ ์ํ ๋๋น ์์
.
* ์ํํธ์จ์ด ํ์ง ํ๊ฐ.
์ ํ์ฑ : ์ ํํ ๊ธฐ๋ฅ์ ์ํํ๋๊ฐ.
์ ์ง ๋ณด์์ฑ : ์ ์ง๋ณด์๋ฅผ ํจ์จ์ ์ผ๋ก ํ ์ ์๋๊ฐ.
๋ฌด๊ฒฐ์ฑ : ๋ฐ์ด๋ฌ์ค ๋ฐ ์ธ๋ถ ๊ณต๊ฒฉ์ ๋ํ ๋ณด์์ฑ์ด ์๋๊ฐ.
์ฌ์ฉ์ฑ : ์ฌ์ฉ์ ์นํ์ ์ธ๊ฐ.
* ์๊ณ ๋ฆฌ์ฆ(Algorithm)
์ด๋ ํ ๋ฌธ์ ์ ๋ํ ํด๊ฒฐ๋ฐฉ๋ฒ์ ์ถ์ํํ์ฌ, ๋จ๊ณ์ ์ ์ฐจ๋ฅผ ๋
ผ๋ฆฌ์ ์ผ๋ก ๊ธฐ์ ํด๋์๊ฒ.
*์๊ณ ๋ฆฌ์ฆ์ ์กฐ๊ฑด
์
๋ ฅ(Input): ์๊ณ ๋ฆฌ์ฆ ์ํ์ ํ์ํ ์๋ฃ๊ฐ ์ธ๋ถ์์ ์ ๊ณต๋์ด์ผ ํ๋ค.
์ถ๋ ฅ(Output): ์๊ณ ๋ฆฌ์ฆ ์ํ ํ ํ๋ ์ด์์ ๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ๋์ด์ผ ํ๋ค.
๋ช
ํ์ฑ(Definiteness): ์ํํ ์์
์ ๋ด์ฉ๊ณผ ์์๋ฅผ ๋ช
ํํด์ผํ๋ค.
์ ํ์ฑ(finiteness) : ๋ฌธ์ ํด๊ฒฐ๋ค์ ๋ฐ๋์ ์ข
๋ฃ๋์ด์ผ ํ๋ค.
ํจ๊ณผ์ฑ(effectiveness): ๋ชจ๋ ๋ช
๋ น์ด๋ค์ ์คํ์ด ๊ฐ๋ฅํด์ผํ๋ค.
*์๊ณ ๋ฆฌ์ฆ์ ํํ ๋ฐฉ๋ฒ
1. ์์ฐ์ด๋ฅผ ์ด์ฉํด ์์ ์ ํํ
ex) ์๋ฌผ ๊ธฐ๋ฅด๋ ๋ฐฉ๋ฒ - 1. ํ์ ์ฌ๋๋ค. 2. ๋ฌผ์ ์ค๋ค. 3. ํ๋ณ์ ๋ฐ๊ฒ ํ๋ค. 4. ์๋ฌผ์ด ์๋๋ค. 5. 2๋ฒ๋ถํฐ ๋ฐ๋ณตํ๋ค.
2. ์์๋(Flow Chart)๋ฅผ ์ด์ฉํ ๋์์ ํํ
์์๊ฐ์ ๊ธฐํธ๋ฅผ ์ฌ์ฉํ์ฌ, ๋์์ ์ผ๋ก ํํ, ๋ค๋ง ๋ณต์กํ ์๊ณ ๋ฆฌ์ฆ์ ๊ฒฝ์ฐ ํํ์ด ์ด๋ ต๋ค.
3. ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ด์ฉํ ๊ตฌ์ฒดํ๋ ํํ
4.๊ฐ์์ฝ๋(Pseudo-code)๋ฅผ ์ด์ฉํ ์ถ์ํ๋ ํํ
์กฐ๊ฑด๋ฌธ, Case๋ฌธ, ๋ฐ๋ณต๋ฌธ(for do, while), ํจ์๋ฌธ.... ๋ฑ์ ์ฌ์ฉํ์ฌ ํํํ๋ค.
* ์๊ณ ๋ฆฌ์ฆ ์ฑ๋ฅ ๋ถ์ ๋ฐฉ๋ฒ
* ๊ณต๊ฐ ๋ณต์ก๋
์๊ณ ๋ฆฌ์ฆ ์คํ๋ถํฐ ์๋ฃ๊น์ง ํ์ํ ์ด ์ ์ฅ ๊ณต๊ฐ์ ์
๊ณต๊ฐ ๋ณต์ก๋ = ๊ณ ์ ๊ณต๊ฐ + ๊ฐ๋ณ ๊ณต๊ฐ
* ์๊ฐ ๋ณต์ก๋
์๊ณ ๋ฆฌ์ฆ ์คํ๋ถํฐ ์๋ฃ๊น์ง ์ด ์์์๊ฐ
์๊ฐ ๋ณต์ก๋ = ์ปดํ์ผ ์๊ฐ + ์คํ ์๊ฐ
(์ปดํ์ผ ์๊ฐ์ ๊ณ ์ ์ ์ด๊ณ , ์คํ ์๊ฐ์ ์ปดํจํฐ์ ์ฌ์์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ฏ๋ก, ๋ช
๋ น๋ฌธ์ ์คํ ๋น๋์์ ๋ฐ๋ผ ๊ณ์ฐ)
* ์๊ฐ๋ณต์ก๋๋ฅผ ํ๊ธฐํ๋ ๋น
-์ค(Big-Oh)ํ๊ธฐ๋ฒ
1. ์คํ ๋น๋์๋ฅผ ๊ตฌํ์ฌ ์คํ์๊ฐ ํจ์ ์ฐพ๊ธฐ
2. ์คํ์๊ฐ ํจ์์ ๊ฐ์ ๊ฐ์ฅ ํฐ ์ํฅ์ ์ฃผ๋ n์ ๋ํ ํญ์ ์ ํํ์ฌ
3. ๊ณ์๋ ์๋ต, O์ ์ค๋ฅธ์ชฝ ๊ดํธ์ ์ฝ์
ex ) ํผ๋ณด๋์น ์์ด์ ์๊ฐ ๋ณต์ก๋
1. ์คํ์๊ฐ ํจ์ : 4n +2
2. n์ ๋ํ ํญ์ ์ ํ : 4n
3. ๊ณ์ 4๋ ์๋ตํ๊ณ O์ ์ค๋ฅธ์ชฝ ๊ดํธ์ ์ฝ์
.
๋ฐ๋ผ์ ํผ๋ณด๋์น ์์ด์ ์๊ฐ๋ณต์ก๋๋ O(n)
* n๊ฐ์ ๋ฐ๋ฅธ ์คํ ๋น๋์ ๋น๊ต