• Shuffle
    Toggle On
    Toggle Off
  • Alphabetize
    Toggle On
    Toggle Off
  • Front First
    Toggle On
    Toggle Off
  • Both Sides
    Toggle On
    Toggle Off
  • Read
    Toggle On
    Toggle Off
Reading...
Front

Card Range To Study

through

image

Play button

image

Play button

image

Progress

1/54

Click to flip

Use LEFT and RIGHT arrow keys to navigate between flashcards;

Use UP and DOWN arrow keys to flip the card;

H to show hint;

A reads text to speech;

54 Cards in this Set

  • Front
  • Back
What is engineering, as a discipline?
The application of scientific, economic, social, and
practical knowledge in order to design, build, and
maintain structures, machines, devices, systems,
materials and processes
What is software?
Computer programs and related documentation of
requirements, designs, models, and manuals.
Software Engineering
Engineering discipline that is concerned with all
aspects of software production
Theories, methods and tools for professional software
development
– Computer Code/Programs
– Requirements Documents
– Design Documents
– Data, Process, and other models
– User manuals
What is the high-level process?
Problem -> Requirements Analysis -> Design ->
Implementation -> Testing ->Release -> Maintenance ->Problem
Software Development life cycle: problem
Some entity (program, process, etc) that
requires software to be created as the preferred
solution.
– Usually, the older software is no longer needed
Software Development life cycle: Requirements
The explicit, well defined, thorough
goals of the software. I.e., what should it do?
Software Development life cycle: Design
The detailed plans that will facilitate the
construction of computer code to sufficiently solve
the problem.
Software Development life cycle: Implementation
The construction of the computer
program that is a solution to the problem.
Software Development life cycle: Testing
Validating the requirements are met and the
outcomes of computer programs match the
expectations set forth in the Requirements and Design
stages.
Software Development life cycle: Release
The transition of computer programs from
the developers to the users.
Software Development life cycle:Maintenance
The continual upkeep of the software,
including computer programs, documentation,
requirements, design, testing, and enhancement/bug-fix implementation.

-Designed to evolve to meet the changing needs of
the customer
Characteristic Goals for software Engineering
• Maintainability
• Dependability
• Security
• Efficiency
• Acceptability (compatibility
What are the types of software that we engineer?
• Stand-alone applications
• Interactive Transaction-based Systems
• Embedded System (often real-time)
• Batch-processing Systems
• Entertainment Systems:
• Modeling and Simulation Systems
• Data Collection Systems:
• Systems of Systems
Functional Requirements
• Details of services the software must provide
– e.g., what activities must the software perform or
facilitate?
Non-Functional Requirements
• Constraints on the functionalities of the software
– e.g., how should these functionalities be done to
adhere to the acceptable business process?
Requirements Validation
• Validity
• Consistency
• Completeness
• Realism
– Can the requirements realistically be met given
resource constraints of the environment
• Verifiability
SE process Models
• Multiple Models
• Waterfall
• Incremental Models
• Reuse-oriented Models
Waterfall Model (Process)
Principal stages:
– Requirements Analysis and Definition
– System & Software Design
– Implementation & Unit Testing
– Integration & System Testing
– Operation & Maintenance
Benefits over waterfall process
– Cost of changing/evolving requirements reduced
– Easier to receive / incorporate user feedback
Incremental Development Process
• Spiral Model
• Prototyping
– Design to basic requirements
– Develop prototype
– Collect feedback and further requirements
– Extend prototype
Boehm's Spiral Model
• A 1998 proposed model
• Risk analysis driven
• Cycle:
– Set objectives
– Assess risk, plan risk mitigation
– Develop and validate
– Review and Plan
Rational Unified Process
• A 2003 model, derived from UML-based
work
• Iterative steps:
– Inception
– Elaboration
– Construction
– Transition
Reuse-oriented Process
• looks to maximize use of existing
software to build a composite software system
Reuse-oriented Process stages
• Stages:
– Component Analysis
– Requirements modification
– System design with reuse
– Development and Integration
Software Design Activities
• Architecture Design
• Interface Design
• Component Design
• Database Design
What are the design inputs?
– Platform
- PHP framework, PostgreSQL
– Requirements Specification
– Data Descriptions
Software Design Outputs
• System Architecture
• Database Specification
– ERD
– Data flows
• Interface Specification
• Component Specification
– Including Sub-components
Software/System Architecture
• The high-level design and linkage of
– Sub-systems
– Components
– Sub-components
Architecture Design Objectives
• Understand how to make appropriate
architecture design decisions
• Understand typical architectural patterns
• Understand which patterns are applicable to
which types of software
Standard Architecture Types
Repository
Client-Server
Layered
Object Oriented
Data processing (pipeline)
Program (executable)
Event-driven processing
User Interface centric applications
Repository Architecture and its advantages and disadvantages
Sub-systems must exchange data. Either the data is accessible to all subsystems or data is explicitly passed to other sub-systems
• Advantages
– Efficient way to share large amounts of data;
• Disadvantages
– Data evolution is difficult and expensive;
– Difficult to distribute efficiently.
Client-Server Architecture and its advantages and disadvantages
• Distributed system model in which data and
processing is distributed across a range of
components.
• Advantages
– Distribution of data is straightforward;
• Disadvantages
– No shared data model so sub-systems use different data
organization;
Layered Architecture and its advantages and disadvantages
• Used to model the interfacing of sub-systems
• Advantages
– Internal changes in layers have no effect on other components
• Disadvantages
– Difficult in practice to achieve pure layered architecture
Object Architecture and its advantages and disadvantages
• Structure the system into a set of loosely
coupled objects with well-defined interfaces.
• Advantages
– Objects are loosely coupled so their implementation can be
modified without affecting other objects
• Disadvantages
– Object interfaces may change
Pipeline Architecture and its advantages and disadvantages
• Functional transformations process their
inputs to produce outputs.
• May be referred to as a pipe and filter
model (as in UNIX shell).
• Advantages
– Supports transformation reuse.
• Disadvantages
– Requires a common format for data transfer along the pipeline
Program Architecture
• Typically sequential execution
– Sub-routine calls affected by data or user
interaction logic
Event-driven Architecture
• Driven by externally generated events
• Two principal event-driven models
Two principal event-driven models
Broadcast models. An event is broadcast to all
sub-systems.
Interrupt-driven models. Used in real-time
systems where interrupts are detected by an
interrupt handler and passed to some other
component for processing.
User Interface Architectures
Facilitates interactive software processes
-Model-View-Controller (MVC) is dominant
Model-View-Controller
• Client-Server
– Client = view
– Server = controller + model
• N-tier
– Database (model)
– Application Services (business logic / controllers)
– Web Server (views)
• Application
MVC Architecture
• Models (Data)
• Controllers (Logic)
• View (User-interface)
-Dominant web application framework
architecture
MVC Architecture advantages and disadvantages
• Advantages
– Allows data to change independent of presentation
– Allows presentation to change independent of data
• Disadvantages
– Can lead to complex code, even when data models are simple
Transaction Processing Architecture
• Often a sub-sytem of a larger architecture
• Driving goals are
– minimal transaction latency
– ACID : atomic, consistent, isolated, durable
UML
-Unified Modeling Language (UML) is the most
common standardization of software design models
Use Case Diagrams
• Gives a top down perspective of the system
• Shows and describes the functional requirements of
the system
Use case basic symbols and players
Actors – key players to the system
Use Cases – key functions to the system
Included Functions – required functions
Extended Functions – optional functions
Use Case Descriptions
Activity Diagrams
• Used to describe procedural logic and work flow
• Similar to a flowchart
Activity Diagrams Basic Symbols
• Action
- Initial function to describe
• Fork / Join
- Parallel processes not needed to run in order
• Decision / Merge
- Conditional statements
- If-then-else statements
• Flow / Edges
Sequence Diagrams
• Interactive Design
‒ Passes messages between participants
(objects)
Sequence Diagrams Basic Symbols
• Object
• Timeline
‒ How long each object is active
• Active Object
• Method Call
‒ Reaching the next object with a call
• Messages
State Machines
• Another way to describe the behavior of a system
• State Machines model the change of states and the
events that cause them
State Machines Basic Symbols
• Initial State – Starting Position
• Final State – Ending Position
• Do Behavior
• Event / Transition
• State Internal Behavior
Entity-Relationship Diagrams (ERD) and its basic symbols
• Data Model to describe a database in an abstract way
• Chen Notation vs. Crow’s Foot Notation

• Entity
• Relationship
• Attribute