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.