Software Developer

Develops, creates, maintains, and writes/codes new (or modifies existing) computer applications, software, or specialized utility programs.

Below are the Knowledge, Skills, Abilities and Tasks identified as being required to perform this work role.

CourseDESCRIPTION
Knowledge of computer networking concepts and protocols, and network security methodologies.
Knowledge of risk management processes (e.g., methods for assessing and mitigating risk).
K0003Knowledge of laws, regulations, policies, and ethics as they relate to cybersecurity and privacy.
K0004Knowledge of cybersecurity and privacy principles.
K0005Knowledge of cyber threats and vulnerabilities.
K0006Knowledge of specific operational impacts of cybersecurity lapses.
K0014Knowledge of complex data structures.
K0016Knowledge of computer programming principles
K0027Knowledge of organization’s enterprise information security architecture.
K0028Knowledge of organization’s evaluation and validation requirements.
K0039Knowledge of cybersecurity and privacy principles and methods that apply to software development.
K0044Knowledge of cybersecurity and privacy principles and organizational requirements (relevant to confidentiality, integrity, availability, authentication, non-repudiation).
K0050Knowledge of local area and wide area networking principles and concepts including bandwidth management.
K0051Knowledge of low-level computer languages (e.g., assembly languages).
K0060Knowledge of operating systems.
K0066Knowledge of Privacy Impact Assessments.
K0068Knowledge of programming language structures and logic.
K0070Knowledge of system and application security threats and vulnerabilities (e.g., buffer overflow, mobile code, cross-site scripting, Procedural Language/Structured Query Language [PL/SQL] and injections, race conditions, covert channel, replay, return-oriented attacks, malicious code).
K0073Knowledge of secure configuration management techniques. (e.g., Security Technical Implementation Guides (STIGs), cybersecurity best practices on cisecurity.org).
K0079Knowledge of software debugging principles.
K0080Knowledge of software design tools, methods, and techniques.
K0081Knowledge of software development models (e.g., Waterfall Model, Spiral Model).
K0082Knowledge of software engineering.
K0084Knowledge of structured analysis principles and methods.
K0086Knowledge of system design tools, methods, and techniques, including automated systems analysis and design tools.
K0105Knowledge of web services (e.g., service-oriented architecture, Simple Object Access Protocol, and web service description language).
K0139Knowledge of interpreted and compiled computer languages.
K0140Knowledge of secure coding techniques.
K0152Knowledge of software related information technology (IT) security principles and methods (e.g., modularization, layering, abstraction, data hiding, simplicity/minimization).
K0153Knowledge of software quality assurance process.
K0154Knowledge of supply chain risk management standards, processes, and practices.
K0170Knowledge of critical infrastructure systems with information communication technology that were designed without system security considerations.
K0179Knowledge of network security architecture concepts including topology, protocols, components, and principles (e.g., application of defense-in-depth).
K0199Knowledge of security architecture concepts and enterprise architecture reference models (e.g., Zachman, Federal Enterprise Architecture [FEA]).
K0202Knowledge of the application firewall concepts and functions (e.g., Single point of authentication/audit/policy enforcement, message scanning for malicious content, data anonymization for PCI and PII compliance, data loss protection scanning, accelerated cryptographic operations, SSL security, REST/JSON processing).
K0260Knowledge of Personally Identifiable Information (PII) data security standards.
K0261Knowledge of Payment Card Industry (PCI) data security standards.
K0262Knowledge of Personal Health Information (PHI) data security standards.
K0263Knowledge of information technology (IT) risk management policies, requirements, and procedures.
K0322Knowledge of embedded systems.
K0332Knowledge of network protocols such as TCP/IP, Dynamic Host Configuration, Domain Name System (DNS), and directory services.
K0342Knowledge of penetration testing principles, tools, and techniques.
K0343Knowledge of root cause analysis techniques.
K0624Knowledge of Application Security Risks (e.g. Open Web Application Security Project Top 10 list)
IDDESCRIPTION
S0001Skill in conducting vulnerability scans and recognizing vulnerabilities in security systems.
S0014Skill in conducting software debugging.
S0017Skill in creating and utilizing mathematical or statistical models.
S0019Skill in creating programs that validate and process multiple inputs including command line arguments, environmental variables, and input streams.
S0022Skill in designing countermeasures to identified security risks.
S0031Skill in developing and applying security system access controls.
S0034Skill in discerning the protection needs (i.e., security controls) of information systems and networks.
S0060Skill in writing code in a currently supported programming language (e.g., Java, C++).
S0135Skill in secure test plan design (e. g. unit, integration, system, acceptance).
S0138Skill in using Public-Key Infrastructure (PKI) encryption and digital signature capabilities into applications (e.g., S/MIME email, SSL traffic).
S0149Skill in developing applications that can log and handle errors, exceptions, and application faults and logging.
S0174Skill in using code analysis tools.
S0175Skill in performing root cause analysis.
S0367Skill to apply cybersecurity and privacy principles to organizational requirements (relevant to confidentiality, integrity, availability, authentication, non-repudiation).
IDDESCRIPTION
A0007Ability to tailor code analysis for application-specific concerns.
A0021Ability to use and understand complex mathematical concepts (e.g., discrete math).
A0047Ability to develop secure software according to secure software deployment methodologies, tools, and practices.
A0123Ability to apply cybersecurity and privacy principles to organizational requirements (relevant to confidentiality, integrity, availability, authentication, non-repudiation).
A0170Ability to identify critical infrastructure systems with information communication technology that were designed without system security considerations.
IDDESCRIPTION
T0009Analyze information to determine, recommend, and plan the development of a new application or modification of an existing application.
T0011Analyze user needs and software requirements to determine feasibility of design within time and cost constraints.
T0013Apply coding and testing standards, apply security testing tools including “‘fuzzing” static-analysis code scanning tools, and conduct code reviews.
T0014Apply secure code documentation.
T0022Capture security controls used during the requirements phase to integrate security within the process, to identify key security objectives, and to maximize software security while minimizing disruption to plans and schedules.
T0026Compile and write documentation of program development and subsequent revisions, inserting comments in the coded instructions so others can understand the program.
T0034Confer with systems analysts, engineers, programmers, and others to design application and to obtain information on project limitations and capabilities, performance requirements, and interfaces.
T0040Consult with engineering staff to evaluate interface between hardware and software.
T0046Correct errors by making appropriate changes and rechecking the program to ensure that desired results are produced.
T0057Design, develop, and modify software systems, using scientific analysis and mathematical models to predict and measure outcome and consequences of design.
T0077Develop secure code and error handling.
T0100Evaluate factors such as reporting formats required, cost constraints, and need for security restrictions to determine hardware configuration.
T0111Identify basic common coding flaws at a high level.
T0117Identify security implications and apply methodologies within centralized and decentralized environments across the enterprise¡¯s computer systems in software development.
T0118Identify security issues around steady state operation and management of software and incorporate security measures that must be taken when a product reaches its end of life.
T0171Perform integrated quality assurance testing for security functionality and resiliency attack.
T0176Perform secure programming and identify potential flaws in codes to mitigate vulnerabilities.
T0181Perform risk analysis (e.g., threat, vulnerability, and probability of occurrence) whenever an application or system undergoes a major change.
T0189Prepare detailed workflow charts and diagrams that describe input, output, and logical operation, and convert them into a series of instructions coded in a computer language.
T0217Address security implications in the software acceptance phase including completion criteria, risk acceptance and documentation, common criteria, and methods of independent testing.
T0228Store, retrieve, and manipulate data for analysis of system capabilities and requirements.
T0236Translate security requirements into application design elements including documenting the elements of the software attack surfaces, conducting threat modeling, and defining any specific security criteria.
T0267Design countermeasures and mitigations against potential exploitations of programming language weaknesses and vulnerabilities in system and elements.
T0303Identify and leverage the enterprise-wide version control system while designing and developing secure applications.
T0311Consult with customers about software system design and maintenance.
T0324Direct software programming and development of documentation.
T0337Supervise and assign work to programmers, designers, technologists and technicians, and other engineering and scientific personnel.
T0416Enable applications with public keying by leveraging existing public key infrastructure (PKI) libraries and incorporating certificate management and encryption functionalities when appropriate.
T0417Identify and leverage the enterprise-wide security services while designing and developing secure applications (e.g., Enterprise PKI, Federated Identity server, Enterprise Antivirus solution) when appropriate.
T0436Conduct trial runs of programs and software applications to ensure that the desired information is produced and instructions and security levels are correct.
T0455Develop software system testing and validation procedures, programming, and documentation.
T0500Modify and maintain existing software to correct errors, to adapt it to new hardware, or to upgrade interfaces and improve performance.
T0553Apply cybersecurity functions (e.g., encryption, access control, and identity management) to reduce exploitation opportunities.
T0554Determine and document software patches or the extent of releases that would leave software vulnerable.