티스토리 뷰

SW공학의 기본원칙 /추상화 정형화 형식화의 원리 / 분할과 정복의 개념 /계층화의 개념

SW공학의 기본원칙

구조화 기법의 기본원칙 Structured T( 옛날에는 한 덩어리(구조)로 짰지만 이제는 한

덩어리로 프로그램 짜지 말고 톱 다운 식으로 입구하나 출구하나 식으로 만들기 )

추상화의 원리(Principle of Abstraction) (뒤에서 정의설명..)

형식화의 원리(Principle of Formality)

분할과 정복의 개념(Concept of Divide and Conquer)

계층화의 개념 (Concept of Hierarchical Ordering)

정보은닉(Information Hiding)

지역성(localization) ( 한군데서 에러 나면 다른 곳이랑은 관련 안되게 하라,, [객체지향 덩어리분리])

무결성(Conceptual Integrity) ( , 결함이 없다 )

완벽성(Completeness)

논리적인 독립성(Logical Independence)

이러한 것들을 기본으로 해서 프로그램을 짠다..

추상화(Abstraction)의 원리

복잡한 문제를 다루는 가장 기본이 되는 메커니즘으로 어떤 사물을 현실로부터 분리시켜

생각하거나 보는 관점 ( 현실세계의 물체를 객체로 )

[Step1] 요소분해(Factoring) : 객체의 성질을 분해 (, 자동차, , 항공기, 말 등)

[Step2] 추상화(Abstraction) : 공통된 성질을 추출하여 슈퍼클래스를 선정 (, 교통수단)

형식화(정형화)의 원리 (Principle of Formality)

-시스템 개발 과정을 단계화 시켜 매 단계에서의 분석 및 설계를 문서로 공식화하고

논리적 타당성을 검증해 나감

-문서의 부담 때문에 창의성을 억제한다는 비판도 있으나 의사소통을 원활하게 지원하기

위해서는 정형화가 불가피함

-예를 들어 소프트웨어 개발 생명주기의 정형화로 분석-설계-구현-시험-유지보수의 개발

과정이 있고 각 단계마다 요구분석명세서, 설계사양서, 원시코드, 시험한 프로그램 등이

문서로 산출됨

분할과 정복의 개념(Concept of Divide and Conquer)

어려운 문제를 해결할 때 해결하기 쉬운 일련의 작은 문제로 나누어 해결하는 방법으로

프로그램을 간략화 하고 프로그래밍 과정을 세분화 시키는데 사용됨

계층화의 개념 (Concept of Hierarchical Ordering) 또는 구조화(Structured Design or Modularity)

분할된 여러 개의 작은 독립적인 모듈들을 트리 구조(Tree Structure) 형식으로 계층적 구조를 이루도록 배열시켜 관리를 쉽게 하자는 원리

분할과 정복 및 계층화의 개념을 결합시켜 모듈화 프로그래밍을 넘어선 구조적 프로그래밍(Structured Programming)의 개념이 탄생함

정보은폐

캡슐 속에 쌓여진 항목에 대한 정보를 (Data)외부에 감추는 기능

캡슐화와 정보 은폐(Encapsulation & Information Hiding)

자료와 절차를 그룹화한 객체 단위로 소프트웨어 개발

객체의 자료에 직접 접근할 수 없게 통제

캡슐화의 장점

-데이터 무결성(Data Integrity) 유지 (정보 은닉으로 인해 정확한데이터만 컴퓨터내에

있게함)

-모듈화

복잡하고 큰 문제를 간단하고 작은 문제(객체)로 분할

-어플리케이션의 다른 부분들 사이의 종속성 감소

-어플리케이션에 종속된 코드의 양이 감소(모듈화 다른곳에 영향안미침

-새로운 어플리케이션에서 재사용할 수 있는 코드의 양이 증가 (모듈이 있다면 갖다 쓰기만

하면 됨, 부품화됨.

(구글 나라별 추천검색어가 다릅니다 - find 를 검색해보았더니..)

 

호주구글 영국구글 우회접속 주소(나라별 구글 우회 바로가기 링크 2023) - 일체유심조

구글 우회접속 주소 에 대해 공유드리기 전에

wgmakeit.com

 

소프트웨어(S/W) 개발과정 5단계를 알아보자(요구사항 분석부터 유지보수까지) - 일체유심조

프트웨어(S/W) 개발은 복잡한 과정을 거쳐 사용자의 요구를 충족시키는 프로그램을 만들어내는 작업입니다. 실제로 개발자들도 이 개념들을 제대로 알고 개발하는것과, 무작정 개발하는 것은 시

wgmakeit.com

댓글