Software Engineering Principles and System Design

Classified in Computers

Written on in English with a size of 301.21 KB

Software Engineering and Processes

Agile Manifesto

  • Individuals/Interactions over Processes
  • Working software over documentation
  • Collaboration over negotiation
  • Responding to change over following a plan

Requirements Engineering

Descriptions of the services that a system should provide and the constraints on its operation.

Functional

What the system should do.

Non-functional

Not directly concerned with the specific services delivered by the system to its users.

Quality Attributes

A scenario describing quality attributes typically involves these elements:

  1. Source: Origin of the stimulus.
  2. Stimulus: The event arriving.
  3. Artifact: Where the event arrives.
  4. Environment: Conditions in which the scenario takes place.
  5. Response: The result of the event.
  6. Response Measure: Must be quantifiable.

Types of Quality Attributes: Usability, Availability, Performance, Modifiability, Deployability, Safety, Security, Energy Efficiency.

Requirements Activities

  • Elicitation: Interviews, Questionnaires, Workshops, User Story Workshops, Prototyping, Focus Groups, Document Analysis, Observation/Ethnography, Personas.
  • Specification: User Stories, Use Cases, Natural Language.
  • Validation: Feasibility Study, Prototyping, Informal Peer Reviews, Inspections, V-Model.

Systems Modeling

Modeling is about abstractions.

UML Diagrams

UML includes: class diagrams, sequence diagrams, activity diagrams, statemachine diagrams, and use case diagrams.

  • Class diagrams: Show the object classes in the system and the associations between these classes.
  • Sequence diagrams: Show interactions between actors and the system, and between system components.
  • Activity diagrams: Show the activities involved in a process or in data processing.
  • State diagrams: Show how the system reacts to internal and external events.
  • Use case diagrams: Show the interactions between a system and its environment.

C4 Model

Context, Container, Component, Code.

Architecture Patterns

  • Layered: Pros: Portable, modifiable, secure, reusable. Cons: Performance issues.
  • Pipe and Filter: Pros: Modifiable, reconfigurable. Cons: Data format needs to be consistent. (Example: Mailman, Unix)
  • Model Centered (e.g., MVC): Pros: Modifiable, concurrency, centralized control. Cons: Single point of failure, unnecessary complexity for simple UI.
  • Microkernel: Pros: Supports modifiability, extensibility, and testability. Cons: Security vulnerabilities.
  • Client Server: Pros: Low coupling, scalability, client and server independence.
  • Monoliths
  • Service Oriented: Pros: Deployability, testability, reliability.
  • Microservice: Pros: Deployability, independence, scalability. Cons: Network communication overhead, complex transactions, maintenance cost.

Architecture Tactics

7mo4wAAAAAElFTkSuQmCC

Ib60L5gAAAAAElFTkSuQmCC

Software Testing

Related entries: