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

  1. Software Specification: Define software requirements with customers.

  2. Software Development: Actual design and programming of software.

  3. Software Validation: Checks if the software meets requirements.

  4. 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.