1Software Engineering
branch of both compsci and engineering focused on designing, developing, testing, and maintaining software apps.
2Maintainability - Attribute
Attribute - easy to update and adapt to changing user's needs
3Dependability/Security - Attribute
Attribute - Reliable, safe
4Efficiency - Attribute
Attribute - uses system resources optimally
5Acceptability - Attribute
Attribute - easy to use and fits well with users' other tools
6Software Applications
programs designed to help users perform specific tasks on device
7Stand-Alone Application - SoftApp
Soft App - Run locally on a single computer without requiring a network (Microsoft Word)
8Web/Interactive Based Applications - SoftApp
Soft App - Run on a remote server, accessed through a browser, respond to user input (Amazon)
9Embedded Control System - SoftApp
Soft App - Built into hardware to control or manage devices (Car engine control software)
10Batch Processing Systems - SoftApp
Soft App - Process large amounts of data in batches for business operations (Payroll processing system)
11Entertainment System - SoftApp
Soft App - Designed for personal use to entertain the user (Netflix)
12Data Collection Systems - SoftApp
Soft App - Collect data and send it for processing (online survey tool)
13System of Systems - SoftApp
Soft App - Composed of multiple software systems working together (Air traffic control system)
14Generic Products
Pre-built systems that are marketed and sold to any customer who wishes to buy them
specification - software developer
15Customized Products
Software developed specifically for one client, designed to meet their exact specifications and processes
specification - customer
16Design - Fundamental
Fundamental - Defining what the system should do
17Develop - Fundamental
Fundamental - software is designed and programmed
18Test - Fundamental
Fundamental - software is checked to ensure that it is what the customer requires
19Maintain - Fundamental
Fundamental - changing the system in response to changing customer needs
20Requirements Gathering - SLDC
SLDC - 1. Gathers info about requirements
21System Design - SLDC
SLDC - 2. Plan architecture, technologies, and components
22Implementation (Coding) - SLDC
SLDC - 3. Write code based on design specifications
23Testing - SLDC
SLDC - 4. Ensure software works as intended
24Deployment - SLDC
SLDC - 5. Release product into a live environment
25Maintenance - SLDC
SLDC - 6. Fix bugs, update features, and improve performance
26Waterfall Model
Linear and sequential, each phase must be completed before the next, easy to manage but not flexible for changes
Projects with well-defined requirements
27Iterative Model
Simple version then improve through iterations, requires careful planning to make sure increments are meaningful
Projects with evolving requirements
28Agile Mode
Iterative and Collaborative, breaks development into cycles (sprints), really flexible
Dynamic projects with frequent changes
29Development + Operations (DevOps)
Cultural and technical approach that integrates development and operations to enable CI/CD and collaboration (Github Actions)
Automating and improving the delivery of software
30CI/CD
Continuous Integration/Continuous Delivery/Deployment
31Development - Soft Env
Soft Env - Used by developers, no client data
32Testing - Soft Env
Soft Env - Used by QA engineers, no client data
33Staging - Soft Env
Soft Env - Used by QA engineers & clients for UAT, limited production data
34Production - Soft Env
Soft Env - Used by clients, full production data
35Continuous Integration (CI)
Developers frequently merge their code into a shared repo
36Continuous Delivery (CD)
Relies on a deployment pipeline visibility, feedback, continuous deployment