1/157
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced |
|---|
No study sessions yet.
Software Design
A process of defining the architecture components interfaces and other characteristics of a system or component and planning for a software solution
Software Architectural Design
Describing software's top-level structure and organization and identifying the various components also called top-level design
Software Detailed Design
Describing each component sufficiently to allow for its construction and specific behavior
Abstraction
A design principle that focuses on essential characteristics while hiding unnecessary details
Coupling
The degree of interdependence between software modules - low coupling is preferred
Cohesion
The degree to which elements within a module belong together - high cohesion is preferred
Decomposition
Breaking down a complex system into smaller more manageable components
Modularization
Organizing software into separate independent modules
Encapsulation
Hiding internal details of a component and exposing only necessary interfaces also called information hiding
Separation of Interface and Implementation
Keeping the interface definition separate from its implementation details
SWEBOK
Software Engineering Body of Knowledge - ISO/IEC TR 19759:2005 standard specifying guide to generally accepted software engineering knowledge
Programming Paradigm
A style or way of programming that defines how to structure and write code
Procedural Programming
Programming paradigm based on procedure calls with step-by-step instructions also called imperative programming - top-down approach
Logical Programming
Programming paradigm based on mathematical logic with facts and rules - declarative approach rather than imperative
Functional Programming
Programming paradigm treating computation as evaluation of mathematical functions avoiding changing state and mutable data
Object-Oriented Programming
Programming paradigm based on objects that encapsulate state and behavior with features like encapsulation inheritance abstraction and polymorphism
Sequence Construct
Programming construct where statements execute one after another in order
Selection Construct
Programming construct that provides choice between alternatives based on conditions like if-then-else
Repetition Construct
Programming construct that causes statements to execute repeatedly until end condition is met like loops
Software Process
A set of related activities that leads to production of a software system
Software Specification
Fundamental activity defining what services are required and constraints on operation
Software Development
Fundamental activity of designing and programming the software
Software Validation
Fundamental activity of checking software meets customer requirements
Software Evolution
Fundamental activity of modifying software to meet changing customer and market needs
Sequential Life Cycle Model
Linear systematic approach to software development progressing through communication planning modeling construction and deployment - also called Waterfall Model
Waterfall Model
Sequential life cycle model with distinct phases flowing downward like a waterfall
Incremental Life Cycle Model
Development broken into mini projects with partial systems successively built - highest priority requirements tackled first
Evolutionary Life Cycle
Combination of iterative and incremental models allowing system to evolve
Spiral Model
Combination of iterative model and SDLC model with execution in cyclic process - focuses on risk analysis
V-Model
SDLC model where execution happens sequentially in V-shape - also known as Verification and Validation model with testing phase for each development stage
Big Bang Model
Simplest model requiring little planning lots of programming and lots of funds - suitable for small projects
Agile Model
Software development approach based on iterative development - swift and versatile
Scrum
Agile framework focused on managing tasks in team-based development with sprints and daily standups
Extreme Programming XP
Agile framework for higher quality software and quality of life - specific engineering practices like pair programming and test-driven development
RAD Model
Rapid Application Development - process based on prototyping without specific planning - less attention to planning more to development
Use Case Modeling
Interaction modeling approach to model interactions between system and external agents
Sequence Diagram
Interaction modeling to show interactions between system components over time
Class Diagram
Structural model showing classes in system and associations between them in object-oriented design
Data Flow Diagram DFD
Graphical representation of flow of data in business information system showing processes data stores flows and external entities
Process in DFD
Receives input data and produces output with different content or form - named with verb followed by singular noun
Data Flow in DFD
Path for data to move from one part of information system to another - can be single element or data structure
Data Store in DFD
Represents data at rest - situation when system must retain data for later use by processes
External Entity in DFD
Person department or outside organization that provides data to system or receives outputs - also called terminators
Context Diagram
Highest level DFD containing only one process representing entire system - Level 0
Level 0 DFD
Context diagram showing system as single process with external entities and major data flows
Level 1 DFD
Explosion of context diagram showing major processes of system - also called Diagram 0
Level 2 DFD
Further decomposition of Level 1 processes showing more detailed sub-processes
Balancing DFD
Ensuring inputs and outputs are conserved between levels of DFDs during decomposition
Top-Down Decomposition
Technique to show more detail in lower-level DFDs - also called leveling
Logical DFD
Describes flow of data to perform business functions - what system does
Physical DFD
Describes implementation of logical data flow - how system does it
HIPO Diagram
Hierarchical Input Process Output - represents hierarchy of modules in software system
IPO Diagram
Input Process Output - depicts flow of control and data in a module
Data Dictionary
Centralized collection of information about data - metadata repository with rigorous definitions
Metadata
Data about data - information describing data characteristics
Data Dictionary Contents
Information about data flows data structures data elements data stores and data processing
Algebraic Notation in Data Dictionary
Equal sign means is composed of - Plus sign means and - Braces for repetitive elements - Brackets for either or - Parentheses for optional
Data Structure
Made up of smaller structures and elements described using algebraic notation
Data Element
Smallest unit of data that has meaning - base or derived
Base Element
Data element initially keyed into system
Derived Element
Data element created by process usually from calculation or decision-making
Structural Record
Group of related data elements like customer name address and telephone
Software Tool
Program that automates labor in management design coding testing inspection or maintenance of programs
Preprocessor
Software tool performing preliminary work on draft program before complete testing
Program Analyzer
Tool that modifies or monitors operation of program to collect information about operating characteristics
Test Data Generator
Tool that analyzes program and produces files of data needed to test program logic
Structured Programming
Developing programs in certain style with standard constructs for easier understanding and maintenance
Top-Down Development
Designing coding and testing by building modules from general level to specialized detailed level
Chief Programmer Team
Team with skilled chief programmer backup programmer and programming librarian
Standard
Published document ensuring reliability of materials products methods or services - establishes requirements specifications and guidelines
ISO
International Organization for Standardization - world's largest developer of international standards
ISO 9001
Standard for quality management systems - can be applied to any organization
Quality Management
What organization does to ensure products satisfy customer quality requirements and comply with regulations
Generic Standard
Standard that can be applied to any organization regardless of size product or sector
Management System
What organization does to manage processes so products meet objectives like customer satisfaction and regulatory compliance
ISO 9000-3
Guideline on how to use ISO 9001 for software development
ISO/IEC/IEEE 12207
International standard for software life cycle processes defining all processes for developing and maintaining software
IEEE 1074
Standard for developing software project life cycle process
Design Constraint
Restriction on design of system or development process that must be fulfilled to meet technical business or contractual obligations
Sources of Design Constraints
Restriction of design options - Conditions on development process - Regulations and imposed standards
Business Constraint
Limits decisions about people processes costs and schedules
Technical Constraint
Limits decisions about technology used in software system
FDA
Food and Drug Administration - regulatory body imposing standards on medical products
FCC
Federal Communications Commission - regulatory body for communications
DOD
Department of Defense - imposes standards on defense systems
UL
Underwriters Laboratory - safety certification organization
Confidentiality
Professional responsibility to respect confidentiality of employers or clients
Competence
Professional responsibility not to misrepresent level of competence or accept work outside competence
Intellectual Property Rights
Professional responsibility to protect patents copyright and IP of employers and clients
Computer Misuse
Professional responsibility not to use technical skills to misuse others computers
ACM IEEE Code of Ethics
Software Engineering Code of Ethics and Professional Practice - standard for teaching and practicing software engineering
Software Engineering Activities
Software specification development validation and evolution
Version Control
Tool for managing changes to source code over time
Building Software
Tools for compiling and creating executable programs
Automated Testing
Tools for automatically testing software for bugs and issues
Deployment Tools
Tools for releasing and installing software in production environments
Monitoring Tools
Tools for tracking software performance and issues in production
Integration Tools
Tools for combining different software components and systems
Context Level Diagram Rules
Must fit on one page - Process name should be system name - Gets number 0
DFD Numbering Convention
Use unique reference numbers - hierarchy of 1 2 3 then 1.1 1.2 1.3 then 1.1.1 1.1.2