No one would like to repeat the same work again and again. To build a good solution to a
problem it is really needed to analyse the problem and then design the solution. What if we
design something without analysing the problem properly. It may happen that it may work for
that particular scenario but may fail for a long run. In a similar fashion, a lot of issues may occur.
But what does really mean by Analysis and design in Software Engineering? So let’s discuss
both of them in detail.
Analysis: An analysis is about breaking down something. In this case, it is about breaking down the problem into manageable parts. In Fact, this is the very first step in software engineering. Basically, the software solves the problem with the help of computers. But to solve a problem it is really needed to understand it first.No matter how large or small it is, the problem can be broken into smaller and smaller parts. And this is the first step in software engineering.
Design: After we analyse the problem, there comes designing. Designing means building something up. Here it is about building the solution. The original problem can be solved by solving smaller problems. So design depends on analysis which sets the stage for design. Design make sure that the product looks integrated but not glued. It is more about choice at all. For example: Designing in such a way that will take care if there are more users in future, for this, it is the analysis to think about more users in future.
Basically there are three major steps in designing:
- Navigation of environment.
- Application of aspects like performance scalability.
- Implementation design of these environments in a given paradigm like language, platform.
Importance of System Analysis and Design
If you are trying to build a system or upgrade a system then system Analysis and Design is kind of the backbone of it. This is a kind of layout of the whole system.let’s list of some of them.
- To improve the quality of the system and thus reducing the occurrences of error in the system. By analysing the problem definitely errors can be reduced.
- To manage and to make the flow of the system it is really helpful.
- Software development is a process that involves architecture, database and backend development etc, this is what we call analysis which is required to design good software.
- Works in the longer run. The analysis helps in keeping in mind to build such a system that may face future challenges too.
- It is the analysis and design of the software which makes it different from a cowboy system. Because of this only we get a decent and a system with a future point of view too.
Commonly used tools of Analysis and Design
To convert our requirement into an implementation phase we need Analysis and Design. For this, there are some tools that help, let’s look at a brief in them.
Analysis Tools: It mainly includes the following components:
- Data Flow Diagram
- Data Dictionary
- State Transition
- ER Diagram
Designing Tools: It mainly includes following components:
- Structure Chart
- Pseudo Code
Data Flow Diagram: It basically defines how the data flows into the system. It has the source, destination and flow of data as its components.
Data flow diagrams may be divided into different levels also.
Data movements are shown by pointed arrows. Data movement is shown from the base of the arrow as its source towards the head of the arrow as a destination. For Example: As shown above, customers orders for online shopping then the arrow is pointed towards the online shopping system and when the online shopping system delivers customers then it is towards customers with a base of an arrow on it.
Data Dictionary: Basically to define the content which is not there in the data flow diagram, there comes the need of data dictionary. Description of data elements that flow external to data stores are also defined by the data dictionary. In a data dictionary, system names either entity name or type, relation all these are entered. Maybe a logical data dictionary included for this.
It must contain information about
- Data Flow
- Data Structure
- Data Elements
- Data Stores
- Data Processing
It basically removes ambiguity and keeps the job of programmers synchronised as the same data is used throughout.It is a way of documenting complete databases at one place.
State Transition Diagram: It specifies the time basically that function will take to execute and data access that is triggered by the event. It defines all the states that a single object may have.
ER Diagram: It basically defines the relationship between the data stores. Mostly used in database design. Relationship between different entities is defined by it.
Structure Chart: To represent the systems in more detail structure charts are basically used. These are somehow derived from Data Flow Diagrams. Tasks are divided into smaller and smaller parts to form a module. Each module now will have functions and sub-functions and these functions and sub-functions are described in a more detailed way here.
It is independent of time and cost and also there is no error checking involved with this tool.
It has different symbols with it:
- Data Flow
- Control Flow
It is really difficult to amend, maintain, verify and to check the completeness of the structure chart. Also, internal working is not shown in the structure chart.
Hipo Diagram: Hierarchical Input Process Output diagram is basically a combination of two methods to provide the means of documentation. Hierarchy of modules is shown basically. Functions are decomposed into sub-functions in a hierarchical way. For good documentation purpose, Hierarchical Input Process Output is used. It gives a more pictorial representation to developers.
How Analysis and Designing Affect SDLC?
Now as we are clear with analysis and design in software engineering. Let’s discuss how it affects SDLC? Now does SDLC mean? It is a Software Development Life Cycle. It basically contains flow to build a software ready to use.
As we can see the steps in the above image, the very first step is Analysis followed by Designing, Implementation, Testing and Maintenance. Suppose the development without any analysis and design. It will totally be a cowboy way of proceeding. SDLC will not be completed if even anyone is missing in these.
Basically, the analysis phase is something which is planned by the senior members of the team by taking the input from the customer. All the risk and each scenario like effort, members everything is counted in this phase only. In the designing phase, generally, we choose some programming language and database also keeping in mind the performance aspect also.
Software for Analysis and Designing:
SAP2000: This can be considered as one of the structural software for Analysis and Design. It can be considered as one of the most integrated, powerful, productive and general-purpose structural programs on the market today. It has a 3D object based graphical modelling with a wide variety of analysis and design options. It is basically a civil-engineering software ideal for effective engineering.
ETABS: It basically caters multi-story building analysis and design.
To build any feature or any software, we need a software development life cycle. Analysis and Design are the most fundamental part of it. Without analysis, we can build software but we may land up building something that can be short term usable. We may lack resources at any point. So analysis is required to build an efficiently. Now there comes designing which is like building the software by the approach of completing smaller modules and then integrating them.
To read more about software engineering, click here.
By Deepak Jain