Software architecture and design is the main phase of software development life cycle. There are various important challenges that are associated with this phase. During our research on evaluating various software architecture & design approaches, we identified many issues that are related with existing approaches like software requirements specification, software design methods & its architectural styles, software processes and different constraints and associated policies. Present methods fulfills the demand of small and large scale software products but still there are some problems that we need to focus more about. In this paper we highlight these problems through survey method and also present some ideas and methods about their improvement.
Key Terms:
SDLC (Software development life cycle),
UML (Unified modeling language),
SDM (Software development methodology), CASE (Computer Aided Software Engineering)
Introduction
Architecture is concerned with the selection of architectural elements, their interactions, and the constraints on those elements. Interaction is necessary to provide a framework in which to satisfy the requirements and serve as a basis for the design.
As in figure 1, we can see that Architecture={elements,interactions,constraints}
Figure 1: Software architecture & design as a bridge
Design is concerned with the modularization and detailed interfaces of the design elements, their algorithms and procedures, and the data types needed to support the architecture and to satisfy the requirements.
Design={elements,algorithms, procedures, datatypes}
Figure 2: Outline of architectural design approach
The next part of this paper is section II which will describe what software architecture & design is all about. Section III of this document will describe the current challenges of software architecture and design. In section IV we will describe our survey research results. Section V will describe our proposed solution by identifying existing problems in software architecture & design. Section VI will summarize the main recommendation for future research on software architecture & design improvements.
Get Help With Your Essay
If you need assistance with writing your essay, our professional essay writing service is here to help!
Literature Review
The design & architecture of software system has primary importance in software engineering research. Design is an activity which is engaged by a wide range of stake holders, used throughout of SDLC phases, & provides set of key choices for application’s architecture. Richard N. Taylor in his research “The once and future focus of software engineering” shows why design is a principal focus. His direction for design research includes:
(a) Various drawing techniques
(b) Design of application functionality, style & architecture
(c) Expand the software design to add different intangible software artifacts.
A good architecture ensures that system will satisfy key requirements e.g. reliability, efficiency, quality, performance, scalability, portability, and interoperability. A bad architecture leads towards complex problems e.g. system crash. David Garlan in his research “Software Architecture: a Roadmap” defines that change in technology raises a number of new challenges for software design architecture. This paper presents some of the important trends & challenges of software architecture in research. Architecture contains set of interacted components. Architectural description includes sufficient information to do high-level analysis of system. It plays a role as a bridge between requirements and implementation. Software architecture has important role in six aspects of software development: Understandability, reuse, construction, evolution, analysis & management.
Design style also plays an important role in real-time software development. For real-time software applications using more sophisticated methodologies is critical to ensure the fulfillment of safety requirements. Manas Saksena in his research “Real-Time Software
Design – State of the Art and Future Challenges” presents a high-level overview of real-time software architecture & design. His focus is on standard techniques for dealing with the critical issues of concurrency and timeliness along with using automated tools. Different design styles for constructing real-time software & principal technological trends currently emerging in the field are described.
For large scale software systems development, different security challenges are associated. Bhavani Thuraisingham & Kevin W. Hamlen in his paper “Challenges and Future Directions of Software Technology: Secure Software Development” describes different aspects of secure software development like security policy de¬nition, formal modeling, developing security architecture and software models, testing veri¬cation and validation and evaluation. By developing & using new software architectures including service oriented architectures and object oriented systems for various computing. This paper describes two security challenges that need to be considered in building evolvable and ¬‚exible secure systems:
(a) Applying formal methods
(b) Secure services modeling of systems.
Data-driven design techniques are important mechanisms to manage complexity in systems. Important design ideas should not be ignored. Rebecca J and Wirfs-Brock in “Designing in the Future” presents their idea that Up-front thinking is rarely wasted effort, especially when tackling complex or novel design problems.
Proposed different aspects:
Focusing on the Details
Thinking and planning add value
The Design Value of Well-structured requirements
The poorly defined requirements have bad effect on overall design architecture. Designers should design the problems in well-formed manner to bring clarity in design. Sometime by using simple, comprehensive solutions is not suitable. Messy problems leads towards poor design architecture & small elements don’t always collectively add up values to design abstractions. It needs to use better techniques for understanding and structuring problems as well as design solutions.
Challenges of Architecture & Design Phase
Here we describe some important phases of SDLC in detail along with the existing processes & then highlighted some problems related to these processes.
3.1. Requirements Elicitation
It is about collecting the requirements of a system from users, customers and other stakeholders. Requirements elicitation processes include interviews, questionnaires, user observation, workshops, brain storming, use cases, role playing and prototyping.
Problems:
Some of the problems are related to:
Defining the system objectives & scope
Understanding among stakeholders affected by the system development
Volatile nature of requirements
3.2. Design Methodologies
Structured methods of software design are sets of guidelines. It supports different type of models like:
A structural model
Data-flow model
An object-oriented model
An ER model
Problems:
Some of the issues related to software design are:
Reliability
Quality
Complexity
Conformity
Changeability
Invisibility
3.3. Tools/Technologies
Different types of software design tools are available in market for use.
Commercial tools are:
Rational Rose (IBM)
Together Designer (Borland)
Rhapsody (I-Logix)
Poseidon (Gentleware)
Free Tools:
UMLet
EclipseUML
Visual Paradigm
Open source Tools:
ArgoUML (Tigris)
StarUML (Sourceforge)
Problems:
Some other problems in CASE technologies are:
Usability, Complexity.
Need creative skills
Integrations between teams
3.4. Software Development Process methodologies
It contains structured set of activities required to develop a software system. Different software process models are used:
Waterfall model
Evolutionary model
Iterative/Incremental model
Spiral model
Agile software Development
Agile unified process
Design driven Development
Dynamic systems development method
Extreme programming
Rational unified process
Scrum
Test driven development
Unified process
Problems:
Applying the wrong process for software product
Use less code by generating code using automated tools
3.5. Design Processes
Some important processes related to design are:
Design system flow
Develop data model
Create physical data model
Design screens
Data entry screens
Inquiry screens
Help screens
Design reports
Design Patterns
Conduct design walkthrough
Screen designs
Problems:
Some of the problems related to design processes are:
Traceability to the requirements.
External consistency with the requirements.
Internal consistency between components.
Appropriateness of design methods and standards used.
Detailed design’s feasibility.
Feasibility of operation and maintenance.
3.6. Design Standards
Following standards are common for all type of software projects
Identification of tasks, frames, units, and procedures
Identification of common modules
Identification of the programming language
Definition of the control logic for every component
Identification of access of database
Evaluate operation and performance requirements
Problems:
Some of problems related to design standards are:
Scalability
Single standard are applied for both small and large scale projects
Standards become very common when every type of project follow them
3.7. Architecture and design Documentation
Documentation includes following mandatory documents:
For Enterprise Architecture:
Physical Design Document
System Architecture Document
Logical Design Document
Infrastructure Component Placement Diagram
Infrastructure Pattern Match
For Waterfall Approach:
Architecture Design
System/Subsystem Design
Application Architecture and Design
Interface Design
Database Design
Screen/Report Design
For Iterative Approach:
Design Class
Design Model
Design Package
Software Architecture Document
Use-Case Realization
Problems:
Understandability
Changeability
Invisibility
3.8. Costs and Risks
When we reduce risks on early stages of architecture and design then this will reduce cost on later phases. Resolving risks on later phases are very expensive and very difficult.
Problems:
From previous studies it is concluded that design for dependability and analysis is risky and costly due to following reasons:
Effect of design on analysis and cost is not determined and understandable.
During the course of the project whenever requirements change, the design will also change. This condition will make dependability of the system invalid.
Top-down method is not good for those systems that are inherited from their previous systems.
Survey Report Results
We have designed a questionnaire containing questions related to challenges of architecture and design.
Research Analysis
This analysis is a comparison and research of most challenging activities during architecture and design phase.
4.1. Secure architecture and design
According to our research 13 % Architect is using attack trees and threat models for designing a secure architecture. 26% are agreed on misuse cases are utilized during the design process. 40% Architects are using secure software design principles to mitigate potential weaknesses. Similarly 20% is agreed on that existing software is using known, good cryptographic methods/algorithm.
Find Out How UKEssays.com Can Help You!
Our academic experts are ready and waiting to assist with any writing project you may have. From simple essay plans, through to full dissertations, you can guarantee we have a service perfectly matched to your needs.
View our academic writing services
Figure 3: Secure architecture and design
4.2. Most challenging task in design process
According to our analysis most challenging activity is to create internal consistency within the module of a system in design process. 40% is agreed on this. Then maintenance and feasibility are challenging with the percentage of 26% and 20% respectively. Finally following standards are also difficult task and 13% are agreed on this.
Figure 4: Most challenging task in design process
4.3. Critical deficiency in design standard
According to our analysis the most critical deficiency in present design standard is flexibility and 40% people are agreed on this. 33% and 26% are agreed on global acceptance and scalability respectively is critical deficiencies.
Figure 5: Critical deficiency in design standard
4.4. Challenges related to design documentation
According to research in case of multiple stakeholders the most common problem related to documentation is changeability. 33% agreed on this. 26% agreed that understandability and flexibility are problems in documentation and 13% agreed that invisibility is a common deficiency.
Figure 6: Challenges related to design documentation
4.5. Design tools & technologies
According to our analysis 33% projects use commercial tools because of their high reliability and efficiency. 26% and 20% organizations or people use open source tool and free tools respectively. These tools are available and easily accessible.
Figure 7: Design tools & technologies
4.6. Design methodologies
Brainstorming is related to finding out root causes of a problem so 26% people are agreed that this process is most effective for requirement elicitation. 20% agreed on prototyping.10% are agreed on interview and questionnaire because they cover very limited domain of problem. 6% agreed on use cases and workshop because it required skills and cooperation between team members.
Figure 8: Design methodologies
4.7. Problems with volatile nature of requirements
According to survey 40% people agreed upon that we can reduce volatility by freezing or fixing requirements. 33% agreed that we can reduce this issue by reducing modifications. 26% agreed that we should ignore changes.
Figure 9: Problems with volatile nature of requirements
4.8. Best software design method
33% people agreed that best method for software design is iterative method. Then 25%, 20%, 13% and 6% agreed that Agile method, Spiral method, waterfall method and evolutionary method respectively are well suited method.
Figure 10: Best software design method
V- Proposed Solution
5.1. Secure architecture and design
For the purpose of reducing security risks designers should use secure software design principles. Designer should also focus on complex cryptographic techniques.
5.2. Most challenging task in design process
Maintaining internal consistency within the module of a system is very difficult task. Designer can reduce this issue by making minimum dependency within the modules. Design whole system in small increments will also help to reduce this problem. In this way requirements will be traceable to their original resources.
5.3. Critical deficiency in design standard
Architecture and design standards are most common thing for all type of software system. So flexibility is very challenging characteristic of standards and policies because most adopted standards are very common. If standards are according to system or product design then we can accommodate new changes.
5.4. Challenges related to design documentation
Changeability or modifiability is very critical task in the design documentation. Requirements might be change in any stage of design phase. When requirement changes then design will be according to these modified requirements.
5.5. Design tools & technologies
According to analysis software development organizations should use commercial tools for design and architecture phase. Commercial tools are reliable, efficient and provide good performance.
5.6. Design methodologies
Defects in requirement elicitation phase will create problem during design and architecture. We should use brainstorming method because this will reduce causes of problem occurrence. For large projects we should use prototyping. In prototyping an increment is delivered to customers and they will identify problems.
5.7. Problems with volatile nature of requirements
Volatile nature of requirement causes problems during architecture and design phase. When we freeze or fix requirements before design and architecture phase then this will reduce problem related to volatility of requirement.
5.8. Best software design method
This is a very challenging task to select a best method for development software. The selected method will also effect on the architecture and design phase of software. When we use iterative method then this will reduce problems in later phases because early increments will measure performance of system’s design.
VI- Conclusion and future work
Software architecture and design is the core activity of any development cycle. In this paper we highlight some problems related to this phase. These problems are faced by every type of project. We also suggest some solution for this problem. When we follow these suggestions then we can reduce problems associated with different phases of architecture and design.
In future we can implement these suggestions. Secondly there is also a possibility to highlight issue very deeply and related to each activity of architecture and design phases.
Cite This Work
To export a reference to this article please select a referencing style below: