1. Software Development Overview
- Software:
- Beyond code; includes executable code, libraries, and documentation.
- A program serves a computational purpose; a software product meets specific requirements.
- Software Engineering:
- Applies scientific principles, methods, and procedures to develop reliable, efficient software.
- Uses systematic, disciplined, quantifiable approaches for development, operation, and maintenance.
- Importance:
- Enables timely creation of complex systems.
- Ensures software reliability and efficiency on real machines.
2. Types of Software
- Operating Systems/System Utilities: Manages hardware (e.g., Windows, Linux utilities).
- Application Software: End-user tools (e.g., MS Office, Adobe Photoshop).
- Engineering/Scientific Software: Technical tools (e.g., MATLAB, CAD).
- Embedded Software: Hardware-specific (e.g., IoT, automotive).
- AI Software: Machine learning, robotics, AI applications.
- Legacy Software: Older, still-used applications.
- Web/Mobile Software: Websites and mobile apps.
3. Characteristics of Good Software
- Operational (Non-Functional):
- Budget: Developed within financial limits.
- Usability: User-friendly (intuitive UI, accessibility).
- Efficiency: Optimizes storage and performance.
- Correctness: Bug-free, delivers required functionalities.
- Functionality: Meets all user needs.
- Dependability: Includes necessary libraries/configurations.
- Security: Protects data from threats.
- Safety: Non-hazardous to users/environment.
- Transitional: Easy to adapt to new environments.
- Maintenance: Simple to update and fix.
4. DevOps
- Why It Matters:
- Improves collaboration, delivery speed, and quality.
- Median salary referenced but not specified (career benefit implied).
- Prerequisites:
- Basic Linux knowledge.
- Familiarity with development platforms.
- Programming skills (JavaScript/Java preferred).
- Willingness to learn new technologies.
5. Scrum Framework (Agile Methodology)