CSDA: About the CSDA


 

What is the CSDA?
 
The IEEE Computer Society Certified Software Development Associate (CSDA) credential is a software development certification that is intended for recent software engineering graduates or entry-level software development professionals.
 
The CSDA Exam Specifications were developed in 2007 through a job analysis process that provided an industry accepted, systematic procedure for identifying/validating the performance domain of a job and the knowledge and skills that are necessary for an entry-level software development professional to perform their job. The CSDA examination was first launched in May 2008.
 
The CSDA exam covers the following knowledge areas (for more specific information on knowledge areas, please see below):
  • Software Requirements (7%)
  • Software Design (8%)
  • Software Construction (10%)
  • Software Testing (7%)
  • Software Maintenance (7%)
  • Software Configuration Management (3%)
  • Software Engineering Management (3%)
  • Software Engineering Process (4%)
  • Software Engineering Methods (5%)
  • Software Quality (6%)
  • Software Engineering Professional Practice (7%)
  • Software Engineering Economics (3%)
  • Computing Foundations (10%)
  • Mathematical Foundations (10%)
  • Engineering Foundations (10%)

 

Knowledge Areas

CSDA Content
Weights

Introductory/
Competency Level

I. Software Requirements
7%
 

A. Software Requirements Fundamentals

 
Introductory

B. Requirements Process

Introductory

C. Requirements Elicitation

Introductory

D. Requirements Analysis

Competency

E. Requirements Specification

Introductory

F. Requirements Validation

Competency

G. Practical Considerations

Introductory
II. Software Design
8%
 

A. Software Design Fundamentals

 
Competency

B. Key Issues in Software Design

Competency

C. Software Structure and Architecture

Competency

D. Human computer Interface Design

Competency

E. Software Design Quality Analysis and Evaluation

Competency

F. Software Design Notations

Competency

G. Software Design Strategies and Methods

Competency
III. Software Construction
10%
 

A. Software Construction Fundamentals

 
Competency

B. Managing Construction

Competency

C. Practical Considerations

Competency

D. Construction Tools

Competency

E. Construction Technologies

Competency

F. Product Documentation

Competency

F. Formal construction methods

 
 
IV. Software Testing
7%
Introductory

A. Software Testing Fundamentals

 
Competency

B. Test Levels

Competency

C. Test Techniques

Competency

D. Human Computer User Interface Testing and Eval

Competency

E. Test-Related Measures

Competency

F. Test Process

 
V. Software Maintenance
7%
Introductory

A. Software Maintenance Fundamentals

 
Introductory

B. Key Issues in Software Maintenance

Competency

C. Maintenance Process

Competency

D. Techniques for Maintenance

 

VI. Software Configuration Management

3%
Introductory
A. Management of the SCM Process
 
Competency
B. Software Configuration Identification
Competency
C. Software Configuration Control
Competency
D. Software Configuration Status Accounting
Introductory
E. Software Configuration Auditing
Introductory
F. Software Release Management and Delivery
Introductory
G. Software Configuration Management Tools
 

VII. Software Engineering Management

3%
Introductory

A. Initiation and Scope Definition

 
Introductory

B. Software Project Planning

 
Introductory

C. Software Project Enactment

 
Introductory

D. Review and Evaluation

 
Introductory

E. Closure

 
Introductory

F. Software Engineering Measurement

 
Introductory

G. Software Management Tools

 
 
VIII. Software Engineering Process
4%
Introductory

A. Process Implementation and Change

 
Competency

B. Process Definition

Introductory

C. Process Assessment

Introductory

D. Measurement

Introductory

E. Software Process Tools

 
IX. Software Engineering Methods
5%
Competency

A. Modeling

 
Competency

B. Types of Models

Competency

C. Analysis

Competency

D. Development Methods

 
X. Software Quality
6%
Introductory

A. Software Quality Fundamentals

 
Competency

B. Software Quality Management Processes

Competency

C. Software Quality Practical Considerations

 

XI. Software Engineering Professional Practice

7%
Competency

A. Professionalism

 
Competency

B. Codes of Ethics

 
Competency

C. Group Dynamics / Psychology

 
Competency

D. Communications Skills

 
Competency

E. Intellectual Property, Confidentiality, Security

 
 

XII. Software Engineering Economics

3%
Competency

A. Software Engineering Economy Fundamentals

 
Competency

B. For-profit Decision-making

Competency

C. Non For-profit Decision-making

Competency

D. Present Economy

Competency

E. Estimation, Risk, and Uncertainty

Competency

F. Multiple Attribute Decisions

 
XIII. Computing Foundations
10%
Competency

A. Programming Fundamentals

 
Competency

B. Algorithms, Data Structures/Representation (static & dynamic) and Complexity

 
Competency

C. Problem solving techniques

 
Competency

D. Abstraction -- use and support for (encapsulation, hierarchy, and so on)

 
Competency

E. Computer organization

 
Competency

F. Basic concept of a system

 
Competency

G. Basic user human factors (I/O, error messages, robustness)

 
Competency

H. Basic developer human factors (comments, structure, readability)

 
Competency

I. Operating system basics

 
Competency

J. Database Basics and Data Management

 
Competency

K. Network communication basics

 
Competency

L. Distributed and Parallel Computing

 
Competency

M. Concepts of programming languages

 
Competency

N. Debugging Tools and Techniques

 
Competency

O. Secure Coding

 
 
XIV. Mathematical Foundations
10%
Competency

A. Functions, Relations and Sets

 
Competency

B. Basic Logic (prepositional and predicate)

Competency

C. Proof Techniques (direct, contradiction, inductive)

Competency

D. Basic Counting

Competency

E. Graphs and Trees

Competency

F. Discrete Probability

Competency

G. Finite State Machines, regular expressions

Competency

H. Grammars

Competency

I. Numerical precision, accuracy, and errors

Competency

J. Number Theory

Competency

K. Algebraic Structures

 
XV. Engineering Foundations
10%
Competency

A. Empirical methods and experimental techniques (such as computer-related measuring techniques for CPU and memory usage)

 
Competency

B. Statistical analysis (including simple hypothesis testing, estimating, regression, and correlation)

Introductory

C. Measurement

Introductory

D. Systems development (security, safety, performance, effects of scaling, feature interaction, and so on)

Competency

E. Engineering design (problem formulation, alternative solutions, feasibility, and so on)

Competency

F. Theory of measurement (for example, criteria for valid measurement)

Competency

G. Simulation, Modeling and Conceptual Prototyping

Introductory

H. GQM Paradigm

Introductory

I. Standards (identify, evaluate, select and adapt)

Introductory

J. Tool and platform selection

Competency

K. Root cause analysis

 

* "Introductory" level is intended to represent someone who has basic capability to perform in a knowledge area, but needs help, supervision, and review to do so--like an apprentice.

* "Competency" level is expected of a typical, experienced, professional--they work largely on their own. One would certainly expect someone at the Competency level to be able to answer more specific, detailed, and difficult questions.

 

Coding Style Rules Coding Style Rules

Coding Style Rules for Test Takers
1.      Code is pseudocode, no specific language
2.      Loop structures end with “end” followed by structure name, e.g., “end while”
3.      “do-while” begins with “do” and ends with “while” – no “end” per se
4.      “if-then” statements have both “if” and “then”
5.      “else if” is a substitute for the “end” on the preceding “if”
6.      Array indices are designated with square brackets [], not parentheses
7.      Function parameters are designated with parentheses ()
8.      No end of line punctuation (i.e., semicolons) is used
9.      Compilation units are “procedure” and “function”. “Module” is not a compilation unit.
10.    Arrays are 1 (one) based
11.    Variable and argument declarations are Pascal style—“name: type”
12.    Data types are “integer” and “float”
13.    Arguments in a function/procedure call are separated by semicolons
14.    “=” is used to designate assignment or comparison, depending on context. This pseudocode doesn’t support C-style side effects (e.g., assignment in a comparison statement), so the test taker does not need to worry about whether = refers to assignment or comparison. It will always be clear in context.
15.    Comments are indicated with “--” double hyphen
16.    Not equals is represented by <>
17.    Logical “and” and “or” are spelled out as “and” and “or”
 
Coding Style Rules for Question Writers
1.      Indentation is 3 spaces
2.      Base indentation level of procedure/function is no indentation
3.      Keywords are not capped
4.      variable names are initial capped