When in the development cycle should security be addressed?
Security should be addressed in each phase of system development.
It should not be addressed only at the end of development because of the added cost time and effort and the lack of functionality.
Attack surface
The attack surface is the collection of possible entry points for an attacker.
The reduction of this surface reduces the possible ways that an attacker can exploit a system.
Threat modeling
Threat modeling is a systematic approach used to understand how different threats could be realized and how a successful compromise could take place.
Computer-aided software engineering
Computer-aided software engineering refers to any type of software that allows for the automated development of software which can come in the form of:
The goals are to increase development speed and productivity and reduce errors.
Software testing levels (list 6)
Fuzzing
Fuzzing is the act of sending random data to the target program in order to trigger failures.
Zero-day vulnerabilities
Zero-day vulnerabilities are vulnerabilities that do not currently have a resolution or solution.
What does the ISO/IEC 27034 standard cover?
The ISO/IEC 27034 standard covers the following items:
OWASP
The Open Web Application Security Project (OWASP) is an organization dedicated to helping the industry develop more secure software.
IPT
An integrated product team (IPT) is a multidisciplinary development team with representatives from many or all the stakeholder populations.
CMMI Model levels
CMMI
CMMI (Capability Maturity Model Integration) is a process improvement approach that provides organizations with the essential elements of effective processes which will improve their performance.
Change management vs. change control
Change management is a systematic approach to deliberately regulating the changing nature of projects.
Change control which is a subpart of change management deals with controlling specific changes to a system.
SDLC methodologies
SCM
Software configuration management (SCM) is the task of tracking and controlling changes in the software through the use of
It has the purpose of maintaining software integrity and traceability throughout the software development life cycle.
Generations of programming languages
Data modeling
Data modeling is a process used to define and analyze data requirements needed to support the business processes within the scope of corresponding systems and software applications.
Object-oriented programming
Object-oriented programming provides:
compared to classical programming languages.
Objects (OOP)
Objects are members or instances of classes. The classes dictate the objects ’ data types structure and acceptable actions.
Object communication
In OOP objects communicate with each other through messages and a method is functionality that an object can carry out. Objects can communicate properly because they use standard interfaces.
Polymorphism
Polymorphism is when different objects are given the same input and react differently.
Data hiding
Data and operations internal to objects are hidden from other objects which is referred to as data hiding. Each object encapsulates its data and processes.
Low coupling
If an object does not require much interaction with other modules it has low coupling.
Object programming design
The best programming design enables objects to be as independent and as modular as possible; therefore the higher the cohesion and the lower the coupling the better.