ISO 9126

 
ISO 9126의 정의
1.        소프트웨어 품질의 특성을 정의하고 품질 평가의 Metrics를 정의한 국제표준
2.        사용자 관점에서 본 소프트웨어의 품질 특성에 대한 표준
 
ISO 9126의 필요성
1.        사용자, 평가자, 시험관, 개발자 모두에게 소프트웨어 제품의 품질을 평가하기 위한 지침의 마련 필요
2.        평가대상 소프트웨어의 품질을 직접 측정하기 위해 필요한 평가 Metrics의 준비
3.        소프트웨어의 품질을 객관적이고 계량적으로 평가할 수 있는 기본적 틀 필요
 
ISO 9126의 구성
구분
분류
내용
ISO 9126-1
주특성과 부특성
- 소프트웨어 품질 특성과 Metrics
ISO 9126-2
External Metrics
-         소프트웨어가 사용될 때의 외부적 성질 표현
-         실행가능 소프트웨어 시험/운영으로 측정
ISO 9126-3
Internal Metrics
-         설계/코드와 관련된 소프트웨어의 내부 속성을 측정
-         설계/코딩 중인 소프트웨어 제품에 적용
 
ISO 9126 품질 특성 모델
 
주특성
주특성 내용
부특성
품질 특성
기능성
소프트웨어가 특정 조건에서 사용될 때, 명시된 요구와 내재된 요구를 만족하는 기능을 만족하는 기능을 제공하는 소프트웨어 제품의 능력
적절성
적밀성
상호 운용성
준수성
보안성
신뢰성
소프트웨어가 규정된 조건에서 사용될 때 규정된 성능수준을 유지하거나 사용자로 하여금 오류를 방지할 수 있도록 하는 소프트웨어 제품의 능력
성숙성
결함허용성
회복성
유용성
사용성
소프트웨어가 규정된 조건에서 사용될 때, 사용자에 의해 이해되고, 학습되며 선호될 수 있게 하는 소프트웨어 제품의 능력
이해성
학습성
운용성
효율성
규정된 조건에서 사용되는 자원의 양에 따라 요구된 성능을 제공하는 소프트웨어 제품의 능력
시간행동
자원이용
유지보수성
소프트웨어 제품을 변경할 수 잇는 능력, 변경에는 운영환경과 요구사항 및 기능적 사양에 따름 소프트웨어의 수정, 개선, 혹은 개작 등이 포함된다.
분석성
변경성
안정성
시험성
이식성
다양한 환경에서 운영될 수 있는 소프트웨어 제품의 능력
적응성
설치성
병행 존재성
적합성
대체성
 
ISO 9126의 품질 평가 절차

1.
        품질 요구 정의 단계
-         품질특성 및 이용 가능한 하부 특성들을 사용하여 품질 요구사항을 규정
-         소프트웨어 또는 시스템의 개발 이전에 반드시 정의되어야 하는 것
2.        평가준비 단계
-         품질요구사항을 측정할 수 잇는 정량적으로 표현 가능한 Metrics를 준비하는 단계
-         소프트웨어 제품의 성질 뿐만 아니라 환경과의 상호작용에 대한 Metrics도 함께 준비
-         Metrics를 사용하여 측정된 값이 어느 등급에 속하는지에 대한 기준을 설정하고, 최종적 판정 기준까지 사전에 정의하는 단계
3.        평가단계
-         실제로 측정하고 등급을 부여하며, 수용 또는 기각 등의 판정을 내리는 단계
-         선정된 Metrics를 소프트웨어 제품에 적용하는 것임
-         등급 부여는 측정된 값이 속하는 범위를 파악하고 등급기준을 결정하는 것
 
ISO 9126의 활용과 전망
1.        ISO 9126의 활용
-         기업내부 자체에서의 구축시스템에 대한 품질 평가를 할 때 활용할 수 있는 기준자료로 사용하는 것이 가능함
-         외부로부터 도입하는 소프트웨어 패키지의 품질 평가시의 기본적인 평가 측정 틀로 활용
-         정보시스템 감리 프로세스의 표준화된 개념적인 큰 틀을 제공하여 활용됨
2.        ISO 9126의 전망
-         정보시스템 감리에 대한 필요성이 커지면서 소프트웨어 품질에 대한 명확한 기분으로 활용할 필요가 있음
-         소프트웨어 제품자체의 품질을 직접적으로 높이는 연구는 보다 더 많은 노력이 필요함
-         소프트웨어 개발 프로세스를 개선하여 소프트웨어의 품질을 높이는 간접적인 방법으로 CMMSPICE를 도입하여 프로세스 능력을 개선하는 것이 필요

[출처] ISO 9126|작성자 피비티


Scalable Vector Graphics (SVG) 1.1 [W3C Recommendation]은 2차원 그래픽을 기술하는 언어이다.
일부 래스터 그래픽 기능도 사용할 수 있지만, 기본적으로는 벡터 그래픽 언어이다. SVG는 실질적이고
유연한 그래픽 포맷을 XML에 제공한다는 목표를 갖고 있으며, 이 부분에서 성공을 거두었다.
SVG의 기능에는 중첩된 변형, 클리핑 경로, 알파 마스크, 래스터 필터 효과, 템플릿 객체 등이 포함되어 있고,
확장성도 우수하다. SVG는 애니메이션, 줌과 플래닝 뷰, 다양한 그래픽 명령어, 그룹핑, 스크립팅, 하이퍼링크,
구조화 된 메타데이터, CSS, 특화된 DOM 수퍼세트, 기타 XML 문서로의 임베딩을 지원한다. SVG의 일부
디자인은 벡터 경로가 개별 애트리뷰트 내에서 공간 한정적인 숫자 리스트로 표현된다는 점에서 논란이
되고 있지만, 메인 SVG는 가장 광범위하게 XML 애플리케이션들을 포용하고 있다. 이 스팩은 여러 언어들로
번역되었다.

SVG 1.1은 XHTML 1.1+과 비슷한 방식으로 모듈화 되었다. Mobile SVG Profiles: SVG Tiny and SVG Basic
[W3C Recommendation]에서는 모바일 폰과 PDA에 적합한 감소된 SVG 모듈을 정의하고 있다. SVG 1.2 [개발중]는 SVG를 완벽한 애플리케이션 플랫폼으로 만드는 새로운 툴과 그래픽 포맷을 추가했다.


import java.awt.event.*; // 각 컴포넌트에 대한 이벤트를 작성하기 위한 패키지
import javax.swing.*; // 스윙 컴포넌트를 사용하기위한 패키지
import java.net.*; // 네트워크 클래스를 사용하기 위한 패키지
import java.io.*; // 입출력 스트림을 사용하기 위한 패키지

 

public class MailSender extends JFrame implements ActionListener{

    // 보낸이, 받는이, 제목을 입력 받기 위한 텍스트 상자

    //private JTextField from, to, suject;

    private JTextField from, to, subject;

    // 메일 본문 작성으로 위한 텍스트 상자
    private JTextArea data;

    // 메일보내기 버튼, 모든 텍스트상자 지우기버튼, 종료 버튼
    private JButton send, clear, exit;

    // SMTP서버에 접속하기 위한 서버주소와 도메인을 담는 변수
    private String server, domain;

   

    // MailSender 생성자(객체 생성시 자동으로 호출)

 //public void MailSender(String server, String domain) { 생성자는 반환형이 없음

    public MailSender(String server, String domain) {

         // 부모 클래스의 생성자를 호출해 창의 제목을 설정
        //Super("send Mail");

        super("send Mail");

        // 생성자로 넘어온 SMTP서버의 주소와 도메인을 각 변수에 할당
        this.server = server;
        this.domain = domain;
  

        // 각 컴포넌트를 생성해 이벤트연결
        from = new JTextField();
        to = new JTextField();
        subject = new JTextField();
        data = new JTextArea();
        send = new JButton("SEND");
        send.addActionListener(this);
        clear = new JButton("CLEAR");
        clear.addActionListener(this);
        exit = new JButton("EXIT");
        exit.addActionListener(this);

 

        // 각 컴포넌트를 패널에 위치 시킴

        JPanel c = new JPanel(new PositionLayout());
        c.add("5%, 2%, 20%, 9%", new JLabel("FROM: "));
        c.add("25%, 2%, 95%, 9%", from);
        c.add("5%, 11%, 20%, 18%", new JLabel("To: "));
        c.add("25%, 11%, 95%, 18%", to);
     //c.add("5%, 20%, 20%, 27%", new JLable("SUBJECT: "));

        c.add("5%, 20%, 20%, 27%", new JLabel("SUBJECT: "));
     //C.add("25%, 20%, 95%, 27%", subject);

        c.add("25%, 20%, 95%, 27%", subject);
        c.add("5%, 29%, 20%, 34%", new JLabel("DATA: "));
        c.add("5%, 35%, 95%, 85%", new JScrollPane(data));
        c.add("8%, 88%, 28%, 95%", send);
        c.add("40%, 88%, 60%, 95%", clear);
        c.add("72%, 88%, 92%, 95%", exit);
 

         // 컴포넌트들을 담고 있는 패널을 프레임에 추가 시킴
      //SetContentPane(c);

        setContentPane(c);

        // 기본 닫힘명령 설정
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        // 프레임의 사이즈 설정
        setSize(400, 450);

        // 프레임을 띄움.
        setVisible(true);
    }

    // 이벤트 핸들러
    public void actionPerformed(ActionEvent e){

        // 이벤트를 발생한 객체를 가져옴
        Object c = e.getSource();

        // 서버로 부터 수신된 응답 메시지를 담기위한 변수
        String incoming;

 

        // exit버튼을 눌렀을경우 프레임을 닫고 프로그램 종료

        if(c==exit) {
         //setvisible(false);

            setVisible(false);
            System.exit(0);

        // clear버튼을 눌렀을경우 모든 텍스트 상자 초기화
        }else if(c==clear) {
            from.setText("");
            to.setText("");
            subject.setText("");
            data.setText("");

        // send버튼을 눌렀을 경우 SMTP서버로 접속 후 메일을 보냄.
        }else if(c==send) {
            try{

                // SMTP서버에 접속 하기위한 소켓 생성(SMTP서버 Def.Port:25)
                Socket s = new Socket(server, 25);

                // 서버로 송신하기 위한 출력 스트림을 얻어온다.
                PrintStream out = new PrintStream(s.getOutputStream(), true);

                // 서버로 부터 수신된 데이터를 받기위한 입력 스트림을 얻어온다.
             //BufferedReader in = new BufferedReader(new InputStreamReader(s.GetInputStream()));

                BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));

 

                // 서버로 연결 요청 메시지를 송신한다.
                out.println("HELO"+domain);

                // 서버로 부터의 응답메시지를 수신 한다.
                incoming = in.readLine();

 

                // 서버로 메일 보낸이에 대한 정보를 송신 한다.
                out.println("MAIL FROM: < "+from.getText()+" >");

                // 서버로 부터의 응답메시지를 수신 한다.
                incoming = in.readLine();

               

                // 서버로 메일 받는이에 대한 정보를 송신 한다.
                out.println("RCPT TO:< "+to.getText()+" >");

                // 서버로 부터의 응답메시지를 수신 한다.
                incoming = in.readLine();

               

                // 서버로 데이터를 보낸다는 메시지를 송신한다.
                out.println("DATA");

                // 서버로 부터의 응답메시지를 수신 한다.
                incoming = in.readLine();

           

                // 서버로 메일 제목을 송신 한다.
                out.println("Subject: "+subject.getText());

                // 서버로 부터의 응답메시지를 수신 한다.
                incoming = in.readLine();

     

                // 본문 내용의 끝에 캐리지리턴값과 라인피드값을 합친 내용을 서버에 전송
                String msg = data.getText();
               out.println(msg+"\r\n.\r\n");

               // 서버로 부터의 응답메시지를 수신 한다.
               incoming = in.readLine();

               // 서버로 종료한다는 메시지를 송신 한다.
               out.println("QUIT");

             

               // 각 텍스트 상자들의 값을 초기화 한다.

               to.setText("");
               subject.setText("");
               data.setText("");

           // try{}구문에서 예외 발생시 예외 처리 부분..
           }catch(Exception ex){
               ex.printStackTrace();

           }
        }

    }

    public static void main(String args[]) {

        // 프로그램을 실행시 아규먼트 2개가 넘어오지 않았을경우
     //if(args.length(2)){  length는 메소드가 아님

        if(args.length != 2){

            // SMTP서버의 주소와 도메인을 객체에 생성자를 통해 객체 생성
            new MailSender("localhost", "mokpo.ac.kr");
        }else{ // 프로그램을 실행시 아규먼트가 넘어 왔다면

            // SMTP서버의 주소와 도메인을 객체에 생성자를 통해 객체 생성
         //new MailSender(args[0], arg[1]);

            new MailSender(args[0], args[1]);
        }
    }
}

+ Recent posts