Domain 8: Software Development Security 10% Flashcards
Using programming maturity framework
we can lower our errors to 1 per 1,000 lines of code.
Machine code
Sftwr exe directly by the CPU, 0’s and 1’s understood by the CPU
Source Code
Comp programming lang, written in text and is human understandable, translated into machine code.
Assembler language
Short mnemonics like ADD/SUB/JMP which is matched with the full lenght binary machine code, assemblers converts assembly language into machine language
Compiler languages
Translates the higher level language into machine code and saves, often as executables, compiled once and run multiple times.
Interpreted languages
Similar to compilar languages, but interprets the code each time it runs into machine code.
Bytecode
An interpreted code, in intermediary form, converted from source code to interpreted, but still needs to be converted into machine code before it can run on the CPU
Procedural languages (Procedure-oriented)
Uses subroutines, procedures and functions.
Objected-oriented Programming (OOP)
Based on the concept of objects, which may contain data, in the form of fields, often known as attributes, and code, in the form of procedures, often known as methods. An object’s procedures can access and often modify the data fields of the objects with which they are associated. In OOP, comp programs are designed by making them out of obj that interact with one another.
4th gen languages (4GL)
are designed to reduce programming effort and the time it takes to develop software, resulting in a reduction in the cost of sftwr development. Often uses a GUI, drag and drop, and then generating the code, often used for websites, db, reports.
Programming languages and generations
- Machine Code
- Assembler
- Cobol, basic, C++, Java
- ColdFusion, Progress 4gl, SQL, PHP, Perl
CASE (Computer-Aided Software Engineering)
Used for developing high-quality, defect-free, and maintainable software
CASE software 3 categories
- Tools support specific tasks in the sftwr lifecycle 2. Workbenches combine two or more tools focused on a specific part of the sftwr life-cycle. 3. Enviroments combine two or more tools or workbenches and support the complete sftwr life-cycle.
Top-Down Programming
Starts w/ the big picture, then breaks it down into a smaller segments.
Bottom-UP Programming
Piecing together of sys to build more complex sys, making the original sys a sub-sys of the overarching sys.
Proprietary software
Sftwr protected by intellectual property and/or patents, often used interch with Closed Source sftwr, but it really is not. It cna be both Open and Closed Src
GNU (General Public License) also called GPL
users have the freedom to run, study, share and modify the software. A copyleft license, means that derivative work can only be distributed under the same license terms.
BSD (Berkeley Software Distr)
A family of permissive free sftwr licenses, imposing minimal restrictions on the use and redistribution of covered sftwr. This is different than copyleft licenses, which have reciprocity share-alike requirements.
Apache
Sftwr must be free, distri, mod, distri the mod sftwr. Requires the preserv of the cpyrght and disclaimer.
Waterfall
very linear, each phase leads directly into the next. The unmodified waterfall model does not allow us to go back to the previous phase.
Sashimi model (Waterfall w/ overlapping phases)(modified waterfall)
Similar to waterfall, but we always have 2 overlapping phases, if we close one phas, we add the next phase. It allows you to go back to the previous phase but no further.
Agile Software development
Describes a set of values and principles for sftwr development under which require and solutions evolve through the collab effort of self-organizing cross-func teams. Uses adaptive planning, evolutionary development, early delivery, and continuous improvement and it encourages rapid and flexible response to change. For the exam know flow agile.
What is valued in the manifesto:
Individuals and Interactions more than processes and tools. Working Software more than comprehensive documentation. Customer Collab more than contract negotiation. Responding to Change more than following the plan.
Scrum further development of Agile
designed for teams of approximately 10 individuals, and generally relies on 2-wks development cycles, called “sprints”, as well as short daily stand-up meetings.
3 Core roles in Scrum
Product owner: representing the prod stakeholders, the voice of the cust, accountable for ensuring that the team delivers value to the business. Development team: Responsible for delivering the product at the end of each sprint. Team is made-up of 3-9 individuals who do the actual wrk
Scrum master
Facilitates and accountable for removing impediments to teh ability of the team to deliver the product goals and deliverables. Buffer btw the team and any distracting influences. Ensures the Scrum framework is followed.
XP (Extreme programming)
Intended to improve sftwr quality and responsiveness to changing cust require. Uses/advocates frequent releases in short development cycles, intended to improve productivity and introduce checkpoints at which new customer requirements can be adopted.
XP Uses
programming in pairs or doing extensive code review. Unit testing of all code. Avoiding programming of features until they are actually needed. Flat mngmnt structure. Code simplicity and clarity. Expecting changes in the customer’s requirements as time passes and the problem is better understood. Freq comm w/ cust and among prgrmmrs.
The spiral model
A risk-driven process model generator for sftwr projects.
Spiral model 4 phases
Planning, risk, analysis, engineering and evaluation.. A sftwr project repeatedly passes through these phases in iterations (called Spirals in this model).
RAD (Rapid Application Development)
Puts an emphasize on adaptability and the ncessity of adjusting requirements in response to knowledge gained as the project progresses. Prototypes are often used. Very suited for developing sftwr that is driven by user interf requir. GUI blders are often called RAD tools.
Prototyping
Breaks projects into smaller tasks, creating multiple prototypes of sys design features. A working mdl of sftwr w/ some limited funct, rather than designing the full sftwr up front.
SDLC (Sftwr Development Life Cycle)
The aim is to produce high-quality sys that meet or exceed customer expectations, based on customer requirement, by delivering sys which move through each clearly define phase, within scheduled time frames and cost estimates. All software development method follow SDLC phases but the method of doing that varies vastly btw methodologies.
SDLC Phases:
investigation, analysis, design, build, test, implement, maintenance and support (and disposal). Can have security built into each step of the process, for the exam it always does. If an answer about SDLC does not list secure or security, it would be wrong and can be eliminated.
Project
is a temp endeavor, w/ a finite start and end, that is focused on creating a unique product, service, or result.
Program
is a collection of related projects. It is temporary.
Portfolio
is a collection of projects and programs that are managed as a group to achieve strategic objectives
IPT (Integrated Product Team)
A multidisciplinary group of people who are collectively responsible for delivering a defined product or process. IPTs are used in complex development programs/projects for review and decision making. Are created most often as part of structured sys engineering methodologies, focusing attention on understanding the needs and desires of each stakeholder.
Source code escrow
The deposit of the source code of sftwr w/ a 3rd party escrow agent. Escrow is typic reques by a parting licensing sftwr (the licensee), to ensure maintenance of the sftwr instead of abandonment or orphaning.
Source code repositories
Using public 3rd party code repositories comes with some security concerns. One of the most import cntrls is using MFA. They are often used by open-source sftwr prjcts and other multi-developer projects to handle various vers. They help develop submit patches of code in an organized fashion
API Security
Allows app to comm w/ another app, OS, DB, Ntwrk.
OWASP
also has an Enter Sec API Toolkit project, which includes these crit API cntrls
DevOps
a sftwr develop and deliery process that emphasizes comm and collaboration btw product managment, sftwr develop, and ops profs in the entire service lifecycle, from design through software retirement.
DevOps
a sftwr develop and deliery process that emphasizes comm and collaboration btw product managment, sftwr develop, and ops profs in the entire service lifecycle, from design through software retirement. Automates and monitors all the sftwr processies.
Databases
an organized collection of data. It is the collection of schemas, tables, queries, reports, views, and other objects.
DBMS (database management system)
A comp sftwr app that interacts w/ the user, other apps, and the DB itself to capture and analyze data.
Most common DB model today
is the relational model as represented by the SQL language.
Common logical data models for
DB include: Hierarchical DB, Relational mdl
Relational mdl
orgs data into 1 or + tables (or relations) of columns and rows, w/ a unique key identifying each row.
Foreign key
They are in relational DBs with the matching primary key of a parent DB table. It is always the primary key in the local DB.
Referential integrity
when every foreign key in a secondary tbl matches a primary key in the parent tbl. It is broken if not all foreign keys match the primary key.
Semantic integrity
each attribute value is consistent w/ the attribute data type.