Domain 8: Software Development Security Flashcards
Types of programming languages
- Interpreted Languages: such as Python, R, and Javascript. This is where the source code itself is distributed and the interpreter executes the source code on their system.
- Compiled Languages: Such as C and Java, they must be compiled before use in an executable
Key phases of SDLC
5 Key Phases:
- Initiation
- Development/acquisition
- Implementation/assessment
- Operation/maintenance
- Disposal
What is initiation (SDLC)?
Process of determining feasibility, cost, risk analysis, getting management approval, and establishing basic security objectives
What is development/acquisition phase (SDLC)?
Define security architecture, perform risk assessment, determine initial security controls and countermeasures, and document security controls and concept of operations
What is implementation/assessment (SDLC)?
Test, evaluate and deploy the new system into operations. This includes performing a security assessment to determine security posture, implementing corrective actions to weak security controls, and getting certification and accreditation for the new system.
What is the software development life cycle? (conceptually)
A process designed for the planning, creating, testing, and deploying of an information system.
What is operations/maintenance phase (SDLC)?
System maintenance, includes readiness review to ensure everything is ready to go. Also focuses on configuration management and change control.
What is disposal phase (SDLC)?
System is decommissioned or taken out of operations for termination, upgrade, or replacement. Focus is on the planning for the transfer, protection, or proper destruction of documentation, hardware, and/or software.
Three key phases of Change Management process?
- Request control,
- Change control
- Release control
Explain Request Control
Provides an organisation framework within which users can request modifications, managers can conduct cost/benefit analysis, and developers can prioritise tasks
Explain Change Control (Change Management)
Provides an organised framework within which multiple developers can create and test a solution prior to rolling it out into a production environment.
Explain Release Control (Change Management)
Once the changes are finalised, they must be approved for release through the release control procedure. Focus is on removing programming aides (such as back doors) and ensure acceptance testing is performed before release.
What is the purpose of the Configuration Management Process?
Used to control the version(s) of software used throughout an organisation and formally track and control changes.
Define Configuration Identification (Configuration Management process)
Administrators document the configuration of covered software products throughout the organisation
Define Configuration Control (Configuration Management process)
Ensures that changes to software versions are made in accordance with the change control and configuration management policies. Updates can be made only from authorised distributions in accordance with these policies.
Configuration Status Accounting
Formalised procedures are used to keep track of all authorised changes that take place.
What is a Configuration Audit?
Periodic configuration audit should be conducted to ensure that the actual production environment is consistent with the accounting records and that no unauthorised configuration changes have taken place.
Define Software Capability Maturity Model (SW CMM)
It is a 5 level software development maturity model that describes procedures, principles, and practices that underlie software development process maturity.
Define 5 levels of SW CMM
- Initiating: competent people, informal processes, ad-hoc, absence of formal process
- Repeatable: project management processes, basic life-cycle management processes
- Defined - engineering processes, presence of basic life-cycle management processes and reuse of code, use of requirements management, software project planning, quality assurance, configuration management practices.
- Managed: product and process improvement, quantitatively controlled
- Optimising: continuous process improvement works with an IDEAL model
Define IDEAL model
Organizational improvement tool/model, including:
I: Initiate, begin effort. Outline business reasons behind change, support is built for the initiative, and the appropriate infrastructure is put in place.
D: Diagnose, perform assessment of current state and make recommendations.
E: Establish an action plan
A: Implement action plan, including develops solutions and then tests, refines, and implements them.
L: Leverage assessments, and continuously improve
Define Gantt Chart and PERT
Gantt Charts are a bar chart for project planning timings (including when things are planned to happen). While, PERT is Program Evaluation Review Technique for project scheduling used to judge the size of a software product in development and calculate the standard deviation (SD) for risk assessment. PERT is used to direct improvements to project management and software coding in order to produce more efficient software.
Define DevOps
An approach which aims to resolve issues by bringing the three functions of Software Development, Quality Assurance, and IT Operations together. It is not focused on security.
Types of Software Development Models
- Simplistic: model of continual steps in order
- Waterfall: System Requirements –> Software Requirements –> Analysis –> Program Design –> Coding –> Testing –> Operations and Maintenance
- Waterfall including Validation and Verification (V&V):. Validation = doing the right job, and verification=doing the job right. This model allows the validation and verification of software at all levels during production.
- Spiral Model: Encapsulates a number of iterations of the Waterfall model, including, determining objectives, alternatives, and constraints –> evaluate alternatives, identify and resolve risks –> plan next phases –> and develop and verify next-level product.
- Cleanroom: write code correctly first time, quality through design
Agile Software Development
It is an approach to delivering software, with working software being a primary measure of success