You are on page 1of 5

Topic Functionality (static views)

Concerns Providing a list of features Specifying functional behavior Understanding usage profile

Models Use cases / user stories Numbered requirements Descriptive specifications Formal specifications Operational modes Operational profiles Sequence diagrams Flowcharts Pseudocode State diagrams

Analysis Requirement analysis Analysis of formal specs for completeness, consistency Used in performance, reliability and usability analysis Algorithmic correctness, role of participants, interactions between operations State machine analysis: Reachability analysis, Proof of properties Dependency analysis

Functional behavior (dynamic views)

Modeling multistep operations & interactions Handling of arbitrary input sequences and combinations

Engineering Prototyping & other requirements elicitation techniques Mathematical abstractions to facilitate formal specification Using usage frequencies to drive release plans, usability engg Algorithm design

Testing White box (unit), black box (system) tests Simulated execution based on executable formal specs Testing based on usage profiles System test cases

State machine design

Load testing (test sequences)

Structure (static views) [Note that structure is a dev. internal concern, unlike the others which are product attributes]

Modularity, Class diagrams Interfaces, (Informal) Block Relationships diagrams between structural elements

Interface specification, interface control

Unit testing

Responsibility allocation Interaction patterns Distribution patterns Performance Capacity Throughput

Collaboration diagrams Deployment view Physical view Flowcharts Dataflow diagrams Sequence diagrams

Collaboration analysis Node capabilities and utilization analysis Bottleneck analysis Bottleneck analysis Platform benchmarking Workload analysis Processor utilization analysis Queueing models Scheduling analysis Queueing models

Design patterns

Integration testing

Systems engineering Configuration testing System and software Load testing dimensioning Stress testing Hotspot optimization Profiling Idletime measurement

Response time

Network bandwidth utilization Memory utilization

(Informal) block diagrams, sequence diagrams, control flow diagrams, process diagrams Protocols Message flow diagrams (message sequence charts) DTDs (datatype definitions)

Priority assignment Increasing concurrency Parallel computing Bandwidth allocation Contention resolution Codesize optimization Stack size selection Memory management

Application benchmarking

Network usage and behavior analysis Memory usage and management analysis

Network monitoring

Memory usage analyzer (detection of memory leaks, profiling memory usage)

Other resource utilization (disk space, power, weight) Dependability Deadlines

Resource usage tables e.g. table of files stored and disk space needed (Same as response time) Reliability growth curves Reliability models

Resource usage and management analysis Concurrency patterns Response time analysis Scheduling analysis Reliability (blocks)analysis Reliability estimation Failure Modes and Effect Analysis (FMEA) Failure probability analysis Numerical analysis

Buffering

Benchmarking

Reliability

Rate-monotonic scheduling Designing for predictability Software reliability engineering Reliability certification Fault zones Passive redundancy Active redundancy Algorithm design / selection

Performance monitoring Operational profilebased automated testing Soak testing (continuous operation) Fault injection testing

Availability: fault identification and fault tolerance Precision

Fault trees

Mathematical models of algorithm behavior

Security

Block diagrams Operational views (e.g. sequence diagrams)

Threat response analysis, what-if analysis

Authentication, capabilities, security zones, validation of inputs, trust levels, active detection

Checking against hand-computed results Plugging results back into equations Threat injection testing

Safety Debuggability, Testability [another mostly internal concern] Operability Learnability Interoperability Administration: Installation etc. Evolvability Modifiability Extensibility Scalability Portability Business aspects Cycletime Cost Reusability

Use cases Fault trees

FMEA

Formal methods Built-in self tests Instrumentation

Reliability testing, fault injection testing

Usability

Operational profiles

SUMI Interface metaphors, consistency Standardized interfaces Install scripts, patches, configurability Modular design, Design patterns Hooks, callouts Algorithm selection Layering Middleware Incremental dev. Reuse and domain engineering, technology use Developing reusable software

Collaboration diagrams Use cases Structure diagrams (e.g. class diagrams) Structure diagrams Control flow diagrams Class diagrams GANTT charts Budgets Staffing Class diagrams

Standards conformance analysis

User observation testing, surveys User observation testing, feedback Interoperability testing Test team experience

SAAM Dependencies analysis SAAM Computational complexity analysis SAAM Time estimation Effort estimation Budgetary analysis

Component-based development Domain engineering The table above is just my own understanding. It is incomplete and evolving.

You might also like