Core Software Engineering Concepts and Methodologies
Software Engineering: A Layered Technology
Software Engineering is called a layered technology because it is built on a foundation with multiple layers, each supporting the one above it. The layers are:
Quality Focus (Foundation Layer):
- Ensures the process and product quality.
- Every layer depends on the focus on quality.
Process Layer:
- Acts as the framework for software development.
- Provides control and coordination for projects.
Methods Layer:
- Provides technical “how-tos” for building software.
- Includes
Core Software Engineering Concepts: Processes and Models
Software Engineering Process and Framework
Defining a Software Process
A process in software engineering is a set of organized activities for developing software, including planning, designing, coding, testing, and maintenance.
Generic Process Framework Phases
The generic process framework provides a high-level structure that can be adapted to various software development models, such as Agile, Waterfall, and V-Model. The framework is generally composed of these key phases:
Communication
This phase focuses
UI/UX Design & Web Development: Key Principles
User-Centered Design Principles
- User-centered design focuses on how users actually interact, not how designers assume they will.
- The user is not you – Real user needs must be understood through research.
Motor Laws (Human Capabilities in UI)
- Fitts’ Law – The time to reach a target depends on its distance (↑ = slow) & size (↑ = fast).
- Formula: T = D / W
- UI Tip: Make frequently used buttons larger & closer.
- Steering Law – Navigating through constrained paths slows down interaction.
- UI
Personal Projects Showcase: Web Development & More
Personal Projects
1. INDIEREADS
- AJAX for auto-loading on scroll
- Connect Storage Engine for reading JSON on MariaDB
- Balsamiq for wireframe layouts
- Canva for logo creation
2. Wave Function Collapse
- WFC algorithm to make images based on seed
- HTML5 Canvas
3. Automatic Cat Feeder
- React
- ESP32 Microcontroller with C
- Arduino
4. Jamming the Bozone
- Google Calendar API for embedded calendar
- Bootstrap to make site responsive
- Email submission with PHP
5. FITNESS BROS
- Trello for task management
- Bootstrap for mobile-first design
6.
Read MoreScrum Project Management: Essential Elements and Best Practices
Sprint Artifacts
Product Backlog
- Prioritized feature list
- Short descriptions of all desired product functionality
- Adaptable and evolves with product knowledge gained during sprints
Sprint Backlog
- Managed by the team during the sprint
- List of tasks to be completed during the sprint, identified by the Scrum team
- Team selects product backlog items, often as user stories
Increment
- Total of completed Product Backlog items from the current and all previous sprints
- Must be functional and demonstrate product evolution
Artifact
Read MoreSoftware Development Essentials: SDLC, SRS, COCOMO, Agile & Risk
Functional vs. Non-Functional Requirements
Understanding the difference between functional and non-functional requirements is crucial in software development:
- Functional Requirements: Specify what the system should do (features, actions, and behaviors).
- Non-Functional Requirements: Define how the system should perform (quality attributes like performance, security).
Here’s a comparison:
- Functional: Focuses on specific functionalities of the system.
- Non-Functional: Focuses on system quality and constraints.