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:
- Source: Origin of the stimulus.
- Stimulus: The event arriving.
- Artifact: Where the event arrives.
- Environment: Conditions in which the scenario takes place.
- Response: The result of the event.
- 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.