SWEBOK 한글 번역 및 해설

웨드_ |

소프트웨어를 개발한다는 너무나도 창조적인 행위 자체를 어떻게 체계화해서 문서로 정의할 수 있을까?

 

SWEBOK이란 Software Engineering Body of Knowledge, 소프트웨어 공학 지식체계를 ISO/IEC에서 표준화하여 제공하는 문서이다. 소프트웨어 개발 업계의 베테랑일수록 이 문서의 심오함에 감탄을 금하지 못한다..고 하는데, 필자는 아직 갈 길이 먼것 같다 :)

 

 

 

 

 

SWEBOK은 5가지 목적으로 작성되었고,

 

1. 세계적으로 소프트웨어 공학에 대해 일관성 있는 정보를 전달한다

2. 소프트웨어 공학의 범위를 명확히 정하고 전산학, 수학, 프로젝트 관리와 같은 다른 활동과의 차이를 명백히 한다

3. 소프트웨어 공학의 내용을 설명한다

4. 소프트웨어 공학의 지식체계에 대한 쉬운 Top-Down 접근방법을 제공한다.

5. 인증이나 자격증의 교과 과정을 위한 기반을 제공한다

 

 

15가지의 지식영역(Knowledge Area)로 분류되어 있다.

 

1  Software Requirements (소프트웨어 요구사항)

2  Software Design (소프트웨어 설계)

3  Software Construction (소프트웨어 구현)

4  Software Testing (소프트웨어 테스팅)

5  Software Maintenance (소프트웨어 유지보수)

6  Software Configuration Management (소프트웨어 형상관리)

7  Software Engineering Management (소프트웨어 공학 관리)

8  Software Engineering Process (소프트웨어 공학 프로세스)

9  Software Engineering Models and Methods (소프트웨어 공학 모델과 방법론)

10  Software Quality (소프트웨어 품질관리)

11  Software Engineering Professional Practice (소프트웨어 공학 전문가 기량)

12  Software Engineering Economics (소프트웨어 공학 경제학)

13  Computing Foundations (컴퓨팅의 기반)

14  Mathematical Foundations (수학적 기반)

15  Engineering Foundations (공학적 기반)

 

 

 

SWEBOK 목차보기

 

Chapter 1: Software Requirements

 

1. Software Requirements Fundamentals

 

1.1. Definition of a Software Requirement

1.2. Product and Process Requirements

1.3. Functional and Nonfunctional Requirements

1.4. Emergent Properties

1.5. Quantifiable Requirements

1.6. System Requirements and Software Requirements

 

2. Requirements Process

 

2.1. Process Models

2.2. Process Actors

2.3. Process Support and Management

2.4. Process Quality and Improvement

 

3. Requirements Elicitation

 

3.1. Requirements Sources

3.2. Elicitation Techniques

 

더보기

4. Requirements Analysis

 

4.1. Requirements Classification

4.2. Conceptual Modeling

4.3. Architectural Design and Requirements Allocation

4.4. Requirements Negotiation

4.5. Formal Analysis

 

5. Requirements Specification

 

5.1. System Definition Document

5.2. System Requirements Specification

5.3. Software Requirements Specification

 

6. Requirements Validation

 

6.1. Requirements Reviews

6.2. Prototyping

6.3. Model Validation

6.4. Acceptance Tests

 

7. Practical Considerations

 

7.1. Iterative Nature of the Requirements Process

7.2. Change Management

7.3. Requirements Attributes

7.4. Requirements Tracing

7.5. Measuring Requirements

 

8. Software Requirements Tools

 

Chapter 2: Software Design

 

1. Software Design Fundamentals

 

1.1. General Design Concepts

1.2. Context of Software Design

1.3. Software Design Process

1.4. Software Design Principles

 

2. Key Issues in Software Design

 

2.1. Concurrency

2.2. Control and Handling of Events

2.3. Data Persistence

2.4. Distribution of Components

2.5. Error and Exception Handling and Fault Tolerance

2.6. Interaction and Presentation

2.7. Security

 

3. Software Structure and Architecture

 

3.1. Architectural Structures and Viewpoints

3.2. Architectural Styles

3.3. Design Patterns

3.4. Architecture Design Decisions

3.5. Families of Programs and Frameworks

 

4. User Interface Design

 

4.1. General User Interface Design Principles

4.2. User Interface Design Issues

4.3. The Design of User Interaction Modalities

4.4. The Design of Information Presentation

4.5. User Interface Design Process

4.6. Localization and Internationalization

4.7. Metaphors and Conceptual Models

 

5. Software Design Quality Analysis and Evaluation

 

5.1. Quality Attributes

5.2. Quality Analysis and Evaluation Techniques

5.3. Measures

 

6. Software Design Notations

 

6.1. Structural Descriptions (Static View)

6.2. Behavioral Descriptions (Dynamic View)

 

7. Software Design Strategies and Methods

 

7.1. General Strategies

7.2. Function-Oriented (Structured) Design

7.3. Object-Oriented Design

7.4. Data Structure-Centered Design

7.5. Component-Based Design (CBD)

7.6. Other Methods

 

8. Software Design Tools

 

Chapter 3: Software Construction

 

1. Software Construction Fundamentals

 

1.1. Minimizing Complexity

1.2. Anticipating Change

1.3. Constructing for Verification

1.4. Reuse

1.5. Standards in Construction

 

2. Managing Construction

 

2.1. Construction in Life Cycle Models

2.2. Construction Planning

2.3. Construction Measurement

 

3. Practical Considerations

 

3.1. Construction Design

3.2. Construction Languages

3.3. Coding

3.4. Construction Testing

3.5. Construction for Reuse

3.6. Construction with Reuse

3.7. Construction Quality

3.8. Integration

 

4. Construction Technologies

 

4.1. API Design and Use

4.2. Object-Oriented Runtime Issues

4.3. Parameterization and Generics

4.4. Assertions, Design by Contract, and Defensive Programming

4.5. Error Handling, Exception Handling, and Fault Tolerance

4.6. Executable Models

4.7. State-Based and Table-Driven Construction Techniques

4.8. Runtime Configuration and Internationalization

4.9. Grammar-Based Input Processing

4.10. Concurrency Primitives

4.11. Middleware

4.12. Construction Methods for Distributed Software

4.13. Constructing Heterogeneous Systems

4.14. Performance Analysis and Tuning

4.15. Platform Standards

4.16. Test-First Programming

 

5. Software Construction Tools

 

5.1. Development Environments

5.2. GUI Builders

5.3. Unit Testing Tools

5.4. Profiling, Performance Analysis, and Slicing Tools

 

Chapter 4: Software Testing

 

1. Software Testing Fundamentals

 

1.1. Testing-Related Terminology

1.2. Key Issues

1.3. Relationship of Testing to Other Activities

 

2. Test Levels

 

2.1. The Target of the Test

2.2. Objectives of Testing

 

3. Test Techniques

 

3.1. Based on the Software Engineer's Intuition and Experience

3.2. Input Domain-Based Techniques

3.3. Code-Based Techniques

3.4. Fault-Based Techniques

3.5. Usage-Based Techniques

3.6. Model-Based Testing Techniques

3.7. Techniques Based on the Nature of the Application

3.8. Selecting and Combining Techniques

 

4. Test-Related Measures

 

4.1. Evaluation of the Program Under Test

4.2. Evaluation of the Tests Performed

 

5. Test Process

 

5.1. Practical Considerations

5.2. Test Activities

 

6. Software Testing Tools

 

6.1. Testing Tool Support

6.2. Categories of Tools

 

Chapter 5: Software Maintenance

 

1. Software Maintenance Fundamentals

 

1.1. Definitions and Terminology

1.2. Nature of Maintenance

1.3. Need for Maintenance

1.4. Majority of Maintenance Costs

1.5. Evolution of Software

1.6. Categories of Maintenance

 

2. Key Issues in Software Maintenance

 

2.1. Technical Issues

2.2. Management Issues

2.3. Maintenance Cost Estimation

2.4. Software Maintenance Measurement

 

3. Maintenance Process

 

3.1. Maintenance Processes

3.2. Maintenance Activities

 

4. Techniques for Maintenance

 

4.1. Program Comprehension

4.2. Reengineering

4.3. Reverse Engineering

4.4. Migration

4.5. Retirement

 

5. Software Maintenance Tools

 

Chapter 6: Software Configuration Management

 

1. Management of the SCM Process

 

1.1. Organizational Context for SCM

1.2. Constraints and Guidance for the SCM Process

1.3. Planning for SCM

1.4. SCM Plan

1.5. Surveillance of Software Configuration Management

 

2. Software Configuration Identification

 

2.1. Identifying Items to Be Controlled

2.2. Software Library

 

3. Software Configuration Control

 

3.1. Requesting, Evaluating, and Approving Software Changes

3.2. Implementing Software Changes

3.3. Deviations and Waivers

 

4. Software Configuration Status Accounting

 

4.1. Software Configuration Status Information

4.2. Software Configuration Status Reporting

 

5. Software Configuration Auditing

 

5.1. Software Functional Configuration Audit

5.2. Software Physical Configuration Audit

5.3. In-Process Audits of a Software Baseline

 

6. Software Release Management and Delivery

 

6.1. Software Building

6.2. Software Release Management

 

7. Software Configuration Management Tools

 

Chapter 7: Software Engineering Management

 

1. Initiation and Scope Definition

 

1.1. Determination and Negotiation of Requirements

1.2. Feasibility Analysis

1.3. Process for the Review and Revision of Requirements

 

2. Software Project Planning

 

2.1. Process Planning

2.2. Determine Deliverables

2.3. Effort, Schedule, and Cost Estimation

2.4. Resource Allocation

2.5. Risk Management

2.6. Quality Management

2.7. Plan Management

 

3. Software Project Enactment

 

3.1. Implementation of Plans

3.2. Software Acquisition and Supplier Contract Management

3.3. Implementation of Measurement Process

3.4. Monitor Process

3.5. Control Process

3.6. Reporting

 

4. Review and Evaluation

 

4.1. Determining Satisfaction of Requirements

4.2. Reviewing and Evaluating Performance

 

5. Closure

 

5.1. Determining Closure

5.2. Closure Activities

 

6. Software Engineering Measurement

 

6.1. Establish and Sustain Measurement Commitment

6.2. Plan the Measurement Process

6.3. Perform the Measurement Process

6.4. Evaluate Measurement

 

7. Software Engineering Management Tools

 

Chapter 8: Software Engineering Process

 

1. Software Process Definition

 

1.1. Software Process Management

1.2. Software Process Infrastructure

 

2. Software Life Cycles

 

2.1. Categories of Software Processes

2.2. Software Life Cycle Models

2.3. Software Process Adaptation

2.4. Practical Considerations

 

3. Software Process Assessment and Improvement

 

3.1. Software Process Assessment Models

3.2. Software Process Assessment Methods

3.3. Software Process Improvement Models

3.4. Continuous and Staged Software Process Ratings

 

4. Software Measurement

 

4.1. Software Process and Product Measurement

4.2. Quality of Measurement Results

4.3. Software Information Models

4.4. Software Process Measurement Techniques

 

5. Software Engineering Process Tools

 

Chapter 9: Software Engineering Models and Methods

 

1. Modeling

 

1.1. Modeling Principles

1.2. Properties and Expression of Models

1.3. Syntax, Semantics, and Pragmatics

1.4. Preconditions, Postconditions, and Invariants

 

2. Types of Models

 

2.1. Information Modeling

2.2. Behavioral Modeling

2.3. Structure Modeling

 

3. Analysis of Models

 

3.1. Analyzing for Completeness

3.2. Analyzing for Consistency

3.3. Analyzing for Correctness

3.4. Traceability

3.5. Interaction Analysis

 

4. Software Engineering Methods

 

4.1. Heuristic Methods

4.2. Formal Methods

4.3. Prototyping Methods

4.4. Agile Methods

 

Chapter 10: Software Quality

 

1. Software Quality Fundamentals

 

1.1. Software Engineering Culture and Ethics

1.2. Value and Costs of Quality

1.3. Models and Quality Characteristics

1.4. Software Quality Improvement

1.5. Software Safety

 

2. Software Quality Management Processes

 

2.1. Software Quality Assurance

2.2. Verification & Validation

2.3. Reviews and Audits

 

3. Practical Considerations

 

3.1. Software Quality Requirements

3.2. Defect Characterization

3.3. Software Quality Management Techniques

3.4. Software Quality Measurement

 

4. Software Quality Tools

 

Chapter 11: Software Engineering Professional Practice

 

1. Professionalism

 

1.1. Accreditation, Certification, and Licensing

1.2. Codes of Ethics and Professional Conduct

1.3. Nature and Role of Professional Societies

1.4. Nature and Role of Software Engineering Standards

1.5. Economic Impact of Software

1.6. Employment Contracts

1.7. Legal Issues

1.8. Documentation

1.9. Tradeoff Analysis

 

2. Group Dynamics and Psychology

 

2.1. Dynamics of Working in Teams/Groups

2.2. Individual Cognition

2.3. Dealing with Problem Complexity

2.4. Interacting with Stakeholders

2.5. Dealing with Uncertainty and Ambiguity

2.6. Dealing with Multicultural Environments

 

3. Communication Skills

 

3.1. Reading, Understanding, and Summarizing

3.2. Writing

3.3. Team and Group Communication

3.4. Presentation Skills

 

Chapter 12: Software Engineering Economics

 

1. Software Engineering Economics Fundamentals

 

1.1. Finance

1.2. Accounting

1.3. Controlling

1.4. Cash Flow

1.5. Decision-Making Process

1.6. Valuation

1.7. Inflation

1.8. Depreciation

1.9. Taxation

1.10. Time-Value of Money

1.11. Efficiency

1.12. Effectiveness

1.13. Productivity

 

2. Life Cycle Economics

 

2.1. Product

2.2. Project

2.3. Program

2.4. Portfolio

2.5. Product Life Cycle

2.6. Project Life Cycle

2.7. Proposals

2.8. Investment Decisions

2.9. Planning Horizon

2.10. Price and Pricing

2.11. Cost and Costing

2.12. Performance Measurement

2.13. Earned Value Management

2.14. Termination Decisions

2.15. Replacement and Retirement Decisions

 

3. Risk and Uncertainty

 

3.1. Goals, Estimates, and Plans

3.2. Estimation Techniques

3.3. Addressing Uncertainty

3.4. Prioritization

3.5. Decisions under Risk

3.6. Decisions under Uncertainty

 

4. Economic Analysis Methods

 

4.1. For-Profit Decision Analysis

4.2. Minimum Acceptable Rate of Return

4.3. Return on Investment

4.4. Return on Capital Employed

4.5. Cost-Benefit Analysis

4.6. Cost-Effectiveness Analysis

4.7. Break-Even Analysis

4.8. Business Case

4.9. Multiple Attribute Evaluation

4.10. Optimization Analysis

 

5. Practical Considerations

 

5.1. The "Good Enough" Principle

5.2. Friction-Free Economy

5.3. Ecosystems

5.4. Offshoring and Outsourcing

 

Chapter 13: Computing Foundations

 

1. Problem Solving Techniques

 

1.1. Definition of Problem Solving

1.2. Formulating the Real Problem

1.3. Analyze the Problem

1.4. Design a Solution Search Strategy

1.5. Problem Solving Using Programs

 

2. Abstraction

 

2.1. Levels of Abstraction

2.2. Encapsulation

2.3. Hierarchy

2.4. Alternate Abstractions

 

3. Programming Fundamentals

 

3.1. The Programming Process

3.2. Programming Paradigms

 

4. Programming Language Basics

 

4.1. Programming Language Overview

4.2. Syntax and Semantics of Programming Languages

4.3. Low-Level Programming Languages

4.4. High-Level Programming Languages

4.5. Declarative vs. Imperative Programming Languages

 

5. Debugging Tools and Techniques

 

5.1. Types of Errors

5.2. Debugging Techniques

5.3. Debugging Tools

 

6. Data Structure and Representation

 

6.1. Data Structure Overview

6.2. Types of Data Structure

6.3. Operations on Data Structures

 

7. Algorithms and Complexity

 

7.1. Overview of Algorithms

7.2. Attributes of Algorithms

7.3. Algorithmic Analysis

7.4. Algorithmic Design Strategies

7.5. Algorithmic Analysis Strategies

 

8. Basic Concept of a System

 

8.1. Emergent System Properties

8.2. Systems Engineering

8.3. Overview of a Computer System

 

9. Computer Organization

 

9.1. Computer Organization Overview

9.2. Digital Systems

9.3. Digital Logic

9.4. Computer Expression of Data

9.5. The Central Processing Unit (CPU)

9.6. Memory System Organization

9.7. Input and Output (I/O)

 

10. Compiler Basics

 

10.1. Compiler/Interpreter Overview

10.2. Interpretation and Compilation

10.3. The Compilation Process

 

11. Operating Systems Basics

 

11.1. Operating Systems Overview

11.2. Tasks of an Operating System

11.3. Operating System Abstractions

11.4. Operating Systems Classification

 

12. Database Basics and Data Management

 

12.1. Entity and Schema

12.2. Database Management Systems (DBMS)

12.3. Database Query Language

12.4. Tasks of DBMS Packages

12.5. Data Management

12.6. Data Mining

 

13. Network Communication Basics

 

13.1. Types of Network

13.2. Basic Network Components

13.3. Networking Protocols and Standards

13.4. The Internet

13.5. Internet of Things

13.6. Virtual Private Network (VPN)

 

14. Parallel and Distributed Computing

 

14.1. Parallel and Distributed Computing Overview

14.2. Difference between Parallel and Distributed Computing

14.3. Parallel and Distributed Computing Models

14.4. Main Issues in Distributed Computing

 

15. Basic User Human Factors

 

15.1. Input and Output

15.2. Error Messages

15.3. Software Robustness

 

16. Basic Developer Human Factors

 

16.1. Structure

16.2. Comments

 

17. Secure Software Development and Maintenance

 

17.1. Software Requirements Security

17.2. Software Design Security

17.3. Software Construction Security

17.4. Software Testing Security

17.5. Build Security into Software Engineering Process

17.6. Software Security Guidelines

 

Chapter 14: Mathematical Foundations

 

1. Set, Relations, Functions

 

1.1. Set Operations

1.2. Properties of Set

1.3. Relation and Function

 

2. Basic Logic

 

2.1. Propositional Logic

2.2. Predicate Logic

 

3. Proof Techniques

 

3.1. Methods of Proving Theorems

 

4. Basics of Counting

 

5. Graphs and Trees

 

5.1. Graphs

5.2. Trees

 

6. Discrete Probability

 

7. Finite State Machines

 

8. Grammars

 

8.1. Language Recognition

 

9. Numerical Precision, Accuracy, and Errors

 

10. Number Theory

 

10.1. Divisibility

10.2. Prime Number, GCD

 

11. Algebraic Structures

 

11.1. Group

11.2. Rings

 

Chapter 15: Engineering Foundations

 

1. Empirical Methods and Experimental Techniques

 

1.1. Designed Experiment

1.2. Observational Study

1.3. Retrospective Study

 

2. Statistical Analysis

 

2.1. Unit of Analysis (Sampling Units), Population, and Sample

2.2. Concepts of Correlation and Regression

 

3. Measurement

 

3.1. Levels (Scales) of Measurement

3.2. Direct and Derived Measures

3.3. Reliability and Validity

3.4. Assessing Reliability

 

4. Engineering Design

 

4.1. Engineering Design in Engineering Education

4.2. Design as a Problem Solving Activity

4.3. Steps Involved in Engineering Design

 

5. Modeling, Simulation, and Prototyping

 

5.1. Modeling

5.2. Simulation

5.3. Prototyping

 

6. Standards

 

7. Root Cause Analysis

 

7.1. Techniques for Conducting Root Cause Analysis

 

 

2004년도에 SWEBOK V2가 출시되고, 2014년에 V3가 출시되었고 계속 업데이트되고 있다. 무료로 누구나 PDF를 신청할 수 있으며, 신청할 수 있는 사이트는 아래와 같다.

 

 

SWEBOK PDF 다운로드 받기

 

IEEE SWEBOK PDF

 

 

또한, 책으로 구매할 수도 있는데, $65 이다.

 

https://www.createspace.com/4581027

 

 

 

현재, 김익환 (필자에겐) 교수님께서 SWEBOK V3 번역 작업과 함께 해설을 남기고 계시기 때문에, 아래 블로그를 참고해서 소프트웨어 개발에 대한 지식을 넓히기 바란다.

 

http://ikwisdom.com/

 

 

 

SW 개발 기술 둘러보기!