PD: 01-Architecture Design Procedure

Purpose

The objectives of the design process are to develop a coherent, well-organized representation of the software product that meets the customer’s requirements and satisfies the predefined quality criteria.

The process comprises the architectural design that will be followed by the detailed design in the next procedure. Architectural design provides the infrastructure for this detailed design.

We are implementing the reuse engineering methodology in order to save effort and cost, and enhance reusability of previous developed solutions.

 

Inputs

 

No

Input

Coming from/Output Of

1.       

EA File Repository

 

1. Business Architecture

No

Activity

Responsible

Input

Output

Temp/Solution

1.         

Determine the system overview and context [boundary and environment] using the component and its physical location on the solution environment throw deployment diagrams.

                                                                                   

SA

EA File Repository

EA File Repository

EA REPO

2.         

Decompose solution into smaller connected business modules

SA

EA File Repository

EA File Repository

EA REPO

3.         

Determine infrastructure components using:

-        Scanning operations types (Reporting, Security, Data access layer, …)

-        Complicated logics to be implemented later

-        Components that encapsulate Third party integration

SA

EA File Repository

EA File Repository

EA REPO

4.         

Architect for Business rules component

SA

EA File Repository

EA File Repository

EA REPO

5.         

Architect for Business process component

SA

EA File Repository

EA File Repository

EA REPO

6.         

Architect for Security component

-        Enable strong passwords to prevent stealing credentials

-        Authentication, with encryption for sensitive data

-        Authorization, with least privilege approach

-        Periodic resetting to passwords

-        OTP

-        2 factors authentication method

-        Captcha to prevent automation of the registration process

-        Security in depth:

o   Objects

o   Functionality

SA

EA File Repository

EA File Repository

EA REPO

7.         

Architect for Solution Configuration component

SA

EA File Repository

EA File Repository

EA REPO

8.         

Architect for Solution provisioner as needed for SaaS model

SA

EA File Repository

EA File Repository

EA REPO

9.         

Architect for Import/Export component

SA

EA File Repository

EA File Repository

EA REPO

10.      

Architect for logging/monitoring component

SA

EA File Repository

EA File Repository

EA REPO

 

2. Data Architecture

No

Activity

Responsible

Input

Output

Temp/Solution

11.      

Determine the system overview and context [boundary and environment] using the component and its physical location on the solution environment throw deployment diagrams.

                                                                                   

SA,TA

EA File Repository

EA File Repository

EA REPO

12.      

Determine the initial data model and user interface.

SA,TA

EA File Repository

EA File Repository

EA REPO

13.      

Architect for distributed database model as needed according to the business solution components

SA,TA

EA File Repository

EA File Repository

EA REPO

14.      

Architect for each database schema decomposition according to business domain models

SA,TA

EA File Repository

EA File Repository

EA REPO

15.      

Architect for multi-tenancy model as needed for SaaS model

SA,TA

EA File Repository

EA File Repository

EA REPO

                                          

3.Application Architecture

No

Activity

Responsible

Input

Output

Temp/Solution

16.      

Select product/project technologies from the following aspects:

  • Backend layer (Microservices architecture, WS, WebApi)
  • Client Side development tools (JS.JQuery.TypeScript)
  • DAL
  • Repository manager: the component that manage the layout attributes
  • Database layer
  • Third Party integration
    • SMS Gateway
    • E-Payment Gate-Way
    • Telerik controls
    • Web Service Integration

DM, TL,

SM,CM

Baselined SRS and Software Development Plan

Technology selection

 

HW Configuration calculator

EA REPO

HW Configuration calculator

17.      

Analyze components for reuse engineering, in order to enhance previous components, save effort and cost, considering backward compatibility

DM,SM

EA REPO

EA REPO

EA REPO

18.      

Plan for mentioned components resulted from reuse engineering:

-        Refactoring: which component to be refactored to meet new architecture

-        Pair programming: which component need pair programming, according to sensitivity, or complexity

DM,SM

EA REPO

EA REPO

EA REPO

19.      

Apply configurable software patterns to meet analysis, users, clients, customers, environments, standards variation, so define solution-required configuration in order to prevent shutdown, enable implementation varieties between all mentioned stakeholders.

Configuration attributes can be:

  • Overall system parameters like: company info
  • Default solution Language
  • Standards of implementing functionalities
  • Definition of screen layouts, what to show and what to hide
  • Calculation equations

DM, TL, PO

EA REPO

EA REPO

EA REPO

20.      

Define caching models in order to support the load balancing/performance for:

  • Front end applications
  • Backend applications
  • Database

DM,SM,CM

EA

Component Model

EA REPO

21.      

Determine Non-Functional requirements components matrix, like (Caching/Security/Learnability)

 

        Quality Attributes

        Functionality

        Suitability

        Accuracy

        Interoperability

        Security

        Compliance

        Reliability

        Maturity

        Fault tolerance

        Recoverability

        Compliance

        Usability

        Understandability

        Learnability

        Operability

        Comp

        Attractiveness

        Efficiency

        Time behavior

        Resource utilization

        Compliance

        Maintainability

        Analyzability

        Changeability

        Stability

        Testability

        Compliance

        Portability

        Adaptability

        Install-ability

        Co-Existance

        Replace-ability

        Compliance

TL, DEV Team

EA

Component Model

EA REPO

22.      

Detect components throw the following:

·        Group business Classes into components

·        Operations groups: operations types from use cases, for example: Security, UI, DB, Network, Encryption and Services

·        Architecture (Generic functionality) requirements, like generic crud/search modules.

TL, DEV Team

EA

Component Model

EA REPO

23.      

Create MOCK modules for not-ready components and third parties if applicable.

TL, DEV Team

EA

Component and class diagrams

EA REPO

24.      

Determine the high-level system architecture using package, component and class diagram using the documented use cases and class diagrams.

 

TL, DEV Team

Baselined SRS and Software Development Plan

High Level System Architecture

EA REPO

25.      

Define non-Functional matrix related requirements, and apply required modifications to the model.

 

Ex

a)      Availability required online and offline mode, so you need to implement caching model

b)      Accessibility: Required implementation over different platforms, for all people, with also have disabilities, so what features can be added for them

c)      Adaptability: How to adapt user behavior with the system?

d)       Availability: how to design 247 availability software, like adding load balancer, grid computing architecture

TL, DEV Team

Baselined SRS and Software Development Plan

High Level System Architecture

EA REPO

26.      

Define the properties of sub-classes using Interfaces in order to force the standard implementation of the general required solution operations like:

  • initialization
  • Login
  • Open Screen
  • Search for item
  • Apply validation rules
  • Add new Object
  • Edit Object
  • Delete Object
  • Approve Object
  • Post Object
  • Prepare Report
  • Print Report
  • Secure object (Who can do what from the previous actions)

 

These operations will be used to detect the solution architecture and building blocks.

TL, DEV Team

 

 

EA REPO

27.      

Determine the attributes for each component such as description, type, purpose, function and dependencies.

TL, DEV Team

Candidates High-Level Design Architecture

Candidates Components

EA REPO

28.      

Check and review the reusable components library and select the reused components.

TL, DEV Team

Reused Components Specifications

Selected Reused Components

EA REPO

29.      

Identify design parameters such as relationships, constrains, and all the internal interfaces (among components).

TL, DEV Team

Selected High-Level Design Architectural

High-Level Design Architecture

EA REPO

30.      

Determine Integration Needed for the solution related to:

-Third party controls or solutions.

-Integration back-end for the clients using micro-services technique guided by the wireframe and use-case models

TL, DEV Team

EA REPO

Integration document

 

4.Technology Architecture

No

Activity

Responsible

Input

Output

Temp/Solution

31.      

Select suitable deployment model and related HW configuration for the solution:

  • On premises
  • Online dedicated server solution
  • On cloud solution
  • SAS deployment model
  • Grid computing model

Enterprise architect

Baselined SRS and Software Development Plan

System Overview and Context

EA REPO

32.      

Create POC (proof of concepts) tasks for selected technologies if needed

DM, TL

PMP

Tasks

Source code project

33.      

Determine deployment model for the given solution components and assess the required technologies, nodes to achieve the given architecture model.

TL, DEV Team

EA

Component Model

EA REPO

34.      

Review the deployment model according to the brand apps in the market in order to enhance the solution proposed model.

 

Ex: compare your deployment model with other competitors.

TL, DEV Team

EA

Component Model

EA REPO

35.      

Select suitable deployment model and related HW configuration for the solution:

  • On premises
  • Online dedicated server solution
  • On cloud solution
  • SAS deployment model
  • Grid computing model

Enterprise architect

Baselined SRS and Software Development Plan

System Overview and Context

EA REPO

               

 

Implementation Guidelines

 

S#

Guidelines

1.       

-You should use the COTS (commercial off-the-shelf) techniques in order to decrease the cost.

-Using [use cases] will indicates you to find the common features that you may need to create as a component in order to be reusable in the future and added to the organization library.

Provided class diagrams will help logically divide your solution into sub modules.

It is a decomposition process to system into subsystems.

-Use case = Verb +Noun

Noun = Object, Verb = Operation

2.       

Business rules component:

In client side:

·        Use eval function to parse the business rule

·        At backend database: use sql statement parser with switch cases:

declare @strSQL nvarchar(200)

set @strSQL = N'select case when GETDATE() > ''1/1/2020'' then 1 else 0 end'

execute sp_executesql @strSQL

 

 

 

 

05- Detailed Design Procedure

Purpose

The objectives of the design process are to develop a coherent, well-organized representation of the software product that meets the customer’s requirements and satisfies the predefined quality criteria. The process comprises of architectural design and detailed design. Architectural design and detailed design are usually carried out in sequence because detailed design is largely dependent on the architectural design. The importance of software design can be defined as ‘quality design is the place where quality is fostered in software engineering’. It is an iterative process through which requirements are translated into a ‘blueprint’ for constructing the software.

Design is the most creative part of software development.

Inputs

No

Input

Coming from/Output Of

1.       

EA File

3.Application Architecture

Activities

No

Activity

Responsible

Input

Output

Temp/Solution

 

1.         

Determine the components’ overview and context.

 

Components should meet both the business, architecture, and quality attributes.

TL, DEV Team

All Procedure Inputs

Components Overview and Context

EA Repo

 

2.         

Determine the components’ Integration sequence and environment.

TL, DEV Team

All Procedure Inputs

Components Overview and Context

EA Repo

 

3.         

Determine the components’ Integration Procedure and criteria.

TL, DEV Team

All Procedure Inputs

Components Overview and Context

EA Repo

 

4.         

Design the detailed interface operations and attributes of each component, class in order to help the implementation phase doing their job.

TL, DEV Team

High-Level Design Architecture

Components Design

EA Repo

 

5.         

Finalize classes operations using the suitable inputs.

TL, DEV Team

High-Level Design Architecture

Class diagram

EA Repo

 

6.         

Define all available interfaces that should be control your class operations execution.

 

Ex:

IPrimaryObj: for 1/1

ISecondaryObj: for1/M

ILookupOj : For lookup screens

IReportPrep: For report parameters screen

TL, DEV Team

High-Level Design Architecture

Class diagram

EA Repo

 

7.         

Define what classes should implement using interfaces

TL, DEV Team

High-Level Design Architecture

Class diagram

EA Repo

 

8.         

Limit the assembly access to the class and its members by access modifiers [public, private, protected and internal ]and explicit interfaces [1]

TL, DEV Team

High-Level Design Architecture

Class diagram

EA Repo

 

9.         

Force the usage of interfaces using explicit interfaces to prevent the usage of the classes.

TL, DEV Team

Requirements documents

Class diagram

EA Repo

 

10.      

Identify relationships between objects and interaction for implementing the solution throw the sequence diagram in order to help developer what to do.

TL, DEV Team

Selected High-Level Design Architectural

High-Level Design Architecture

EA Repo

 

11.      

Create Class Events in order to notify owners by object changes

TL, DEV Team

Approved Clear Traceable Requirements

Developed User Interface

EA Repo

 

 

 

 

 

Develop, finalize and document user interface if needed.

TL, DEV Team

Approved Clear Traceable Requirements

Developed User Interface

EA Repo

12.      

Develop Application slideshow to represent the application features for the end user.

 

Slideshow is a set of slides that represent the solution features to the end user in order in make him oriented with system features.

UX designer

Approved Clear Traceable Requirements

Developed User Interface

EA Repo

13.      

Finalize proposed data model using normalization techniques if.

 

Each field should be described for the usage.

In Description fields in the relevant work product.

TL, DEV Team

Proposed ConvInf

Updated ConvInf

EA Repo

 

14.      

Finalize state chart diagram to represent the different states for the object applicable if needed.

TL, DEV Team

Class diagram

State chart diagram

EA Repo

 

15.      

Update and modify the High-Level Design Architectural if needed.

TL, DEV Team

High-Level Design Architecture

Updated High-Level Design Architectural

EA Repo

 

16.      

Review the data model by creating and validating the database using conversion tool or application manager.

TL, DEV Team

Class diagram & metadata database

Database

EA Repo

 

17.      

Review UI by Creating solution UI.

TL, DEV Team

Mocs

GUI relevant UI

EA Repo

 

18.      

Correct defects until finished

TL, DEV Team

Class diagram & metadata database

 

EA Repo

 

19.      

Baseline all design outputs.

TL, DEV Team

As Per The Process

As Per The Process

As Per The Process

 

20.      

Abstract[2] classes in order to enhance reusability and detect available reusable components

TL, DEV Team

As Per The Process

As Per The Process

As Per The Process

 

21.      

Review Design According to SOLID principles[3]

TL, DEV Team

As Per The Process

As Per The Process

As Per The Process

 

Outputs

No

Output

Going To/Input Of

1.       

High-Level Design Architecture

PD_Implementation_Procedure

PD_Unit_Test_Execution_Procedure

2.       

Detailed Design

PD_Implementation_Procedure

PD_Unit_Test_Execution_Procedure

 

 

 

Implementation guidelines

S#

Implementation Guidelines

1.       

Detailed design: Here you may merge the use cases with default Behavior together in the Same class(s).

You may merge the use cases for the same object in the same class(s).

Ex:

Such as description, type, purpose, function, attributes and dependencies.

2.       

Building blocks can be:

(Business component): Component for the Profile management

(Architecture component): Social media integrator, which integrate with Facebook SDK, Google+ and more

(Quality Attributes): caching data one of performance issues resolution, so we should have a caching model for the content.

 

3.       

Class diagram operation: finalization

Inputs will be:

  • Use cases that determine BUSS classes and operations.
  • Each class will have a public operation represents the use-cases
  • Pre-conditions should be in a separate (Public/private) operation according to your implementation, so if you create a check before executing the operation, you need it public, and you check within the same function, create it private.
  • In case of architecting for mobile, you should select your methodology to decrease consuming your resources, and just send one request instead of two requests.
  • Branching in scenarios will be in a different private functions throw checks before branching.
  • Each consistent bulk of scenario steps should have new private function to increase maintainability.
  • Scenario step with complex implementation code
  • Additional architecture attributes may increase the component, class scope, for example:
    • Design for offline mode
    • Design for performance
    • Design for caching
  • Return values for each operation should:
    • Have a return value
    • Have a unique definition for each value
  • Activity diagram that represents flow and sequence of the interaction.
  • Consider abstraction in order to improve the reusability of each object and make reusable components.
  • Not all operations require WebApi implementation, it may be a client side code like LogOut.

4.       

In infrastructure development, you may not need this activity.

You should find here the Procedures, views, functions and indexes that helps you in your system performance and integrity.

5.       

Ex:

Opened Transaction, Approved Transaction, Posted Transaction