-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathiso27031.go
More file actions
76 lines (64 loc) · 2.27 KB
/
iso27031.go
File metadata and controls
76 lines (64 loc) · 2.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
// Package iso27031 implements NTE INEN-ISO/IEC 27031:2015 SDK
// Information technology — Security techniques — Guidelines for information
// and communication technology readiness for business continuity (ATCN)
//
// This SDK provides a complete implementation of the Ecuadorian adoption of
// ISO/IEC 27031:2011 for IT Readiness for Business Continuity.
package iso27031
import (
"context"
"iso27031-sdk/models"
"iso27031-sdk/services"
)
// SDK represents the main entry point for the ISO 27031 ATCN implementation
// Clause 5: Description - Framework for ATCN establishment and management
type SDK struct {
planning services.PlanningService
operations services.OperationsService
monitoring services.MonitoringService
improvement services.ImprovementService
}
// NewSDK creates a new ISO 27031 ATCN SDK instance
// Clause 5.5: Establishment of ATCN - Systematic process implementation
func NewSDK() *SDK {
return &SDK{
planning: services.NewPlanningService(),
operations: services.NewOperationsService(),
monitoring: services.NewMonitoringService(),
improvement: services.NewImprovementService(),
}
}
// ExecutePDCACycle implements the Plan-Do-Check-Act cycle
// Clause 5.6: Use of plan-do-check-act for establishing ATCN
func (sdk *SDK) ExecutePDCACycle(ctx context.Context, atcn *models.ATCN) error {
// Plan phase - Clause 6: Planning of ATCN
if err := sdk.planning.PlanATCN(ctx, atcn); err != nil {
return err
}
// Do phase - Clause 7: Implementation and operations
if err := sdk.operations.ImplementATCN(ctx, atcn); err != nil {
return err
}
// Check phase - Clause 8: Monitoring and review
if err := sdk.monitoring.MonitorATCN(ctx, atcn); err != nil {
return err
}
// Act phase - Clause 9: Improvement of ATCN
return sdk.improvement.ImproveATCN(ctx, atcn)
}
// Planning returns the planning service
func (sdk *SDK) Planning() services.PlanningService {
return sdk.planning
}
// Operations returns the operations service
func (sdk *SDK) Operations() services.OperationsService {
return sdk.operations
}
// Monitoring returns the monitoring service
func (sdk *SDK) Monitoring() services.MonitoringService {
return sdk.monitoring
}
// Improvement returns the improvement service
func (sdk *SDK) Improvement() services.ImprovementService {
return sdk.improvement
}