01. Intro to SE
Class Rules
Late submissions result in point deductions.
All assignments must be submitted on time.
Cheating will result in no grade.
Class communication and coordination are done through WhatsApp groups.
Class Marking
Various assessments including:
Individual assignments
Team-based projects
Quizzes
Mid-Test
Final Test/Project
Introduction to Software Engineering
Presented by Ratih NE Anggraini, PhD.
Key Concepts Overview
Software Engineering
The process of analyzing user requirements, designing, building, and testing software applications to satisfy those requirements.
Concerned with all aspects of software production from inception to operation and maintenance.
Definition of Software
Software includes:
Instructions for desired features and performance.
Data structures for information manipulation.
Documentation for operations and usage.
Definition of Engineering
A structured series of activities (processes) managing resources to create valuable systems.
Types of Software
System Software: Programs to service other programs (e.g., OS components, compilers).
Application Software: Standalone programs that fulfill specific business needs (e.g., transaction processing).
Embedded Software: Provides control to hardware systems (e.g., remote control systems).
Product-line Software: Offers specific capabilities for various users (e.g., word processing software).
AI Software: Contains algorithms for AI applications (e.g., robotics).
Ubiquitous Computing: Connects functionalities of various objects in environments (e.g., smart homes).
Roles in Software Engineering
Software Engineer/Developer: Designs, codes, and tests software.
Specializations: Front-end, Back-end, Full-stack development.
Project Manager: Oversees the development process, ensuring alignment with market needs.
Software Architect: Designs software structure and ensures scalability and maintainability.
Quality Assurance/Testing Engineer: Tests applications to find and fix defects.
DevOps Engineer: Integrates development and operations processes.
Data Engineer: Maintains data infrastructure and ensures data quality.
Security Engineer: Ensures application security and manages vulnerabilities.
UI/UX Designer: Designs user interfaces and enhances the user experience.
Scrum Master: Facilitates Agile processes and team collaboration.
Software Process Overview
Defined as a sequence of activities leading to software production.
Fundamental Activities
Software Specification: Define software requirements with customers.
Software Development: Actual design and programming of software.
Software Validation: Checks if the software meets requirements.
Software Evolution: Modifies software to meet changing needs.
Software Development Models
1. Waterfall Model
A linear model requiring completion of one phase before starting the next.
Suitable for embedded systems but rigid to change.
2. Incremental Model
Develops slightly improved versions of a product based on user feedback.
Each increment adds new functionalities.
Allows easier testing and debugging, but requires good planning.
3. V Model
An extension of Waterfall emphasizing testing at each development phase.
Promotes defect detection early but is rigid and time-consuming.
4. Iterative Model
Develops software in iterative phases, enhancing small implementations over time.
Adaptive to changes and good for Agile processes but requires skilled development.
5. Spiral Model
Combines iterative and incremental approaches, focusing on risk analysis.
Good for large projects but complex in certification and milestone definition.
6. RAD Model (Rapid Application Development)
Focuses on rapid prototyping with continuous user feedback.
Reduces development time but requires highly skilled developers.
7. Agile Model
Prioritizes flexibility and rapid response to change with incremental delivery.
Involves frameworks like Scrum and Extreme Programming.
Emphasizes customer satisfaction, collaboration, and less documentation.
Discussion Points
Analyze appropriate models for different project scenarios:
Developing a surgical assistance system.
Building a system for a start-up company.
References
Pressman, R. S. (2005). Software Engineering: A Practitioner's Approach.
Sommerville, I. (2016). Software Engineering.
Academic and online resources on software engineer roles and software process models.