+91-98108-26291

20 Oct

Software Architecture Design and Automotive SPICE®

  • 0 Comments

When we are in software development, we should be going through different phases. There have been several methodologies for developing a software which are waterfall model, V model, incremental model, Agile methodology etc. Software architecture design (SwAD) is one of the phases of software development which comes after software requirement analysis. The purpose of the SwAD is to develop blue print of the software and to allocate software requirement to different elements of software architecture. Today lets talk about SwAD from the viewpoint of Automotive SPICE®.

Till Automotive SPICE® V 2.5 software architectural design and detailed design were placed together and were denoted as Eng. 5 Software Design, However when Automotive SPICE® v 3.1 was introduced Software architecture design and software detailed design were segregated and software architecture design was denoted as SWE.2.

 

 

SwAD comes in the software engineering process group which is a part of the primary life cycle process which gives a high level design of the entire software. What SwAD  does, is to convert the software requirement in the software element which represent the architecture design.

First of all we should be aware what is the entry point or entry criteria for SwAD phase:

  • Software requirement specification is developed, reviewed and baselined
  • All the problems that were occurred till software requirement analysis phase were identified and resolved, If there are any problem which exist only for the preventive action, they may continue, but not those problem, which may affect the development of software.

 

When we talk about SwAD, first thing we need to understand the software requirements and existing software architecture. The possible ways to understand the software requirements and existing software architecture can be:

  • By having interviews of the concerned people like software requirement analyst, experts or may be the customers or we can say stakeholders.
  • By having brainstorming sessions within the team
  • By preparing the quistionnaires and getting the answers from all the people involved in the software development
  • By going through software requirement specification

 

 

 

What all software requirements should be considered when we think of developing a software architecture:

1. Non-functional technical requirements

  • Performance
  • Safety
  • Security
  • Testability
  • Modifiability
  • Maximum cohesion and Minimum coupling
  • Reliability
  • Availability
  • Scalability
  • COTS (Commercial of the shelf) elements with defined interfaces
  • And list goes on 

2. Functional Requirements

These are those requirement which actually tells what is the software is suppose to do, so these are dependednt on software to software

3.Business Requirement

  • Cost
  • Time
  • Reusability
  • Impact on the Environment

When it comes to understanding the existing software architecture, we need to see what was the design pattern that was used, what were the design decision taken, what elements were considered when developing the architecture design.

Then next point that comes in to the picture is identifying the design constraints, which involves in:

  • Identifying all the elements that are going to be the part of software architecture, decomposing the entire software into components and elements
  • Allocating the software requirements to the identified elements and components
  • Defining the internal and external interfaces
  • What is the resource consumption per element or component or module
  • Defining the dynamic behavior by using state transition diagram, sequence diagram, use case diagram, etc.

You also need to consider the evaluation of alternative options available of SwAD. When we are starting the development of SwAD, we decide the evaluation criteria based on which the alternative design of software architecture design are evaluated, this evaluation criteria comprises of the following:

  • Overall cost
  • Overall requirement coverage
  • Clarity and conciseness of the design
  • Overall development time which directly or indirectly hit the cost or budget of software development
  • Feasibility
  • Quality
  • Resource or Technology availability

As per Automotive SPICE® V 3.1, SwAD has 9 base practices (BP) that are to be followed, until now we have discussed following BPs of the process:

  • SWE.2 BP2: Allocation of software requirements
  • SWE.2 BP3: Define Interface of software elements
  • SWE.2 BP4: Describe dynamic behavior
  • SWE.2 BP5: Define resource consumption objectives
  • SWE.2 BP6: Evaluate alternative software architectures

Then fomalizing of software architecture design, okay so now, software requirements are understood and allocated, we have understood the existing software architecture as well, entire software has been decomposed into various elements, components, interfaces have been identified and defined, dynamic interaction between various elements have been identified and described, what is going to be the resource consumption such as RAM, ROM, EEPROM data flash memory by the elements of software architecture and lastly evaluation of alternative software architecture based on the evaluation criteria defined in the beginning. Once we are done with all these major points, we should start considering the development of SwAD which is also the first BP of software architecture design.

 

Architecture also focuses on how the elements and components within a system interact with one other.

There are various software architecture design principles which are to be considered when developing the SwAD, to name few of them:

  • Separation of concern
  • Coupling and Cohesion
  • Principle of least knowledge
  • Decomposition and Modularization
  • Grouping the components, etc.

 

There are various views which are to be considered when developing SwAD, to name few of them:

  • Logical view
  • Process view
  • Development view
  • Physical view

 

Phew!!! That’s a lot of work, but it don’t end here, one of the most important and integral part of software architecture design is to identify traceability, which is also the BP7 of the SwAD process, Well not exactly traceability, its bidirectional traceability, so you need to establish bidirectional traceability between software requirements and elements of SwAD and also consider consistency between them which is BP8 of the SwAD process.

After all of this, then comes in verification, Verification of software architecture design and traceability matrix, conduct a review meeting will the relevant stakeholders, this review team can include, software developers, software testers, software architects, project manager, software leaders, customers, etc. Conduct a review meeting to verify the developed SwAD and then based on the review input rework on the SwAD and when it is finalized communicate the SwAD to all the relevant stakeholders which is also the last BP, “BP9 – communicate agreed software architectural design” of SwAD process in Automotive SPICE® V 3.1.

Once you are done with the entire process, lets come to the exit criteria of the software architecture design phase and that is going to be as follows:

  • Alternative software architecture designs are evaluated and the one which is up to the mark as per standards of evaluation criteria is finalized
  • All the problems occurred in this phase are addressed and resolved

That’s all for now folks, Cheers!!! Feedback and suggestions are always welcome.