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:
|
DM,
TL, SM,CM |
Baselined
SRS and Software Development Plan |
Technology
selection |
EA REPO |
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:
|
DM,
TL, PO |
EA REPO |
EA REPO |
EA REPO |
20.
|
Define caching models in order to
support the load balancing/performance for:
|
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:
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 |
4.Technology Architecture
No |
Activity |
Responsible |
Input |
Output |
Temp/Solution |
31.
|
Select suitable deployment model
and related HW configuration for the solution:
|
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:
|
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:
|
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 |