(SENG 204) -
Software Engineering (SENG 204) -
Bilingual Summary
:1
Week 1: Introduction to Software Engineering
Software Engineering Definition: The application of engineering principles to software
development. : .
Industrial Revolutions: Software engineering is at the center of today's industrial
revolution (Industry 4.0 and 5.0). :
(5.0 4.0 ) .
Importance of Software: Modern society depends on large professional software
systems. : .
Software Development Difficulty: Software processes are complex and involve human
decisions and judgments. :
.
Software Development Process Models: There is no universal process model for
software development that is right in every situation. :
.
Software Process Model Selection: The right process depends on customer and legal
regulations, the environment, and the type of software. :
.
:2
Week 2: Software Processes
Software Process Definition: A set of related activities that leads to the production of a
software system. :
.
Fundamental Software Engineering Activities: :
• Software specification: The functionality of the software and constraints on its
operation must be defined.
• : .
• Software development: The software to meet the specification must be produced.
• : .
• Software validation: The software must be validated to ensure that it does what the
customer wants.
• :
.
• Software evolution: The software must evolve to meet changing customer needs.
• : .
Software Process Models: :
• Waterfall Model: Sequential phases (requirements, design, implementation,
testing, maintenance).
• :( ) .
• Incremental Development: Interleaved activities with rapid feedback.
• : .
• Integration and Configuration: Using reusable components.
• : .
Waterfall Model Characteristics: :
• Plan-driven process.
• .
• Cascade from one phase to another.
• .
• Each phase produces documents.
• .
• Appropriate for embedded systems, critical systems, and large systems.
• .
Incremental Development Advantages: :
• Reduced cost of implementing changes.
• .
• Easier to get customer feedback.
• .
• More rapid delivery of useful software.
• .
Process Selection: Different approaches may be needed for different parts of a system.
: .
:3
Week 3: Agile Software Development
Agile Development Definition: Development methods designed to produce useful
software quickly. : .
Agile Methods Characteristics: :
• Small increments (2-3 weeks).
•( 3-2) .
• Customer involvement for rapid feedback.
• .
• Minimal documentation.
• .
• Informal communication.
• .
Agile Manifesto Principles: Individuals and interactions over processes and tools, etc.
: .
Extreme Programming (XP) practices: (XP):
• Incremental development with small, frequent releases.
• .
• Customer involvement.
• .
• Pair programming.
• .
• Test-first development.
• .
• Refactoring.
• .
• Simple design.
• .
Agile Development Practices: :
• User Stories: Scenarios of use experienced by system users.
• : .
• Refactoring: Continuous code improvement.
• : .
• Test-First Development: Tests written before code.
• : .
• Pair Programming: Two programmers working together.
• : .
Agile Project Management: Scrum framework for organizing agile projects.
: .
:4
Week 4: SCRUM & Requirements Engineering
SCRUM Definition: A software and application development framework. :
.
SCRUM Roles: :
• Product Owner: Represents end-user, controls development, defines features.
• : .
• SCRUM Team: Self-organized, multidisciplinary, 5-9 people.
• : 9-5 .
• SCRUM Master: Guides team, resolves obstacles, ensures compliance.
• : .
SCRUM Process: :
• Product Backlog Management.
• .
• Sprint Planning and Goal Setting.
• .
• Daily Scrum Meetings.
• .
• Sprint Review and Retrospective.
• .
Requirements Engineering Definition: Process of finding, analyzing, documenting, and
checking system services and constraints. :
.
Types of Requirements: :
• User Requirements: High-level abstract requirements.
• : .
• System Requirements: Detailed descriptions of functions and constraints.
• : .
• Functional Requirements: Services the system should provide.
• : .
• Non-functional Requirements: Constraints on services or functions.
• : .
Requirements Engineering Activities: :
• Requirements elicitation.
• .
• Requirements analysis.
• .
• Requirements validation.
• .
• Requirements management.
• .
:5
Week 5: System Modeling
System Modeling Definition: Process of developing abstract models of a system.
: .
Model Uses: :
• Explain requirements to stakeholders.
• .
• Document the system for implementation.
• .
• Generate system implementation (model-driven engineering).
•( ) .
UML (Unified Modeling Language): Standard notation for object-oriented modeling.
(UML): .
Basic System Modeling Perspectives: :
• Context Models: System boundaries and environment.
• : .
• Interaction Models: User interaction, system-to-system, component interaction.
• : .
• Structural Models: Organization of system components.
• : .
• Behavioral Models: Dynamic behavior during execution.
• : .
Interaction Modeling Approaches: :
• Use Case Modeling: Interactions between system and external agents.
• : .
• Sequence Diagrams: Interactions between system components.
• : .
Structural Modeling Elements: :
• Class Diagrams: Classes and associations.
• : .
• Generalization: Managing complexity through inheritance.
• : .
• Aggregation: Composition relationships.
• : .
:6
Week 6: Architectural Design
Architectural Design Definition: Understanding how a software system should be
organized. : .
Architectural Abstraction Levels: :
• Architecture in the small (individual programs).
•( ) .
• Architecture in the large (complex enterprise systems).
•( ) .
Advantages of Explicit Architecture: :
• Stakeholder communication.
• .
• System analysis.
• .
• Large-scale reuse.
• .
Architectural Design Decisions: Affect non-functional characteristics of the system.
: .
Architectural Patterns: :
• Model-View-Controller (MVC): Separates data, user interface, and control logic.
• - - (MVC): .
• Layered Architecture: Organizes system into layers of services.
• : .
• Repository Architecture: Shared data in central database.
• : .
• Client-Server Architecture: Distributed system model.
• - : .
• Pipe and Filter Architecture: Functional transformations process inputs to
outputs.
• : .
Application Architectures: :
• Transaction Processing Systems: Process user requests for database operations.
• : .
• Information Systems Architecture: Layered architecture for information systems.
• : .
• Web-based Information Systems: Browser-based user interfaces.
• : .