Domain Analysis
Domain Analysis is commonly referred to as an attempt to design something new in the form of software. It could be the extension of already prevailing software or can be a new system or a new subsystem or it can be a whole new application. The very first task in this regard is The Investigation of DOMAIN of the software, as the developers are not considered as equally knowledgeable for new software to handle. Less work is required as the developer is already aware of the existing domain. Analysts try to gather and elicit all the necessary requirements from the field expertise or the related professionals and they communicate with experts in domain’s terminology to understand it better.This is considered as one of the most important task to gather and extract the requirements. Analyst can face a difficult situation in communication with expert from the domain, if he has not done his homework well before.
Software Elements Analysis
Extraction of Requirements is often considered to be the essential task to create a software product. The basic problem is that the customers generally know their need, but technically they are not aware of the functioning of the software. Only an experienced and well skilled software engineer can identify the contradictory, incomplete and the ambiguous requirements. Correction in requirements and reduction of risk can be achieved by demonstration of code frequently.
Specification
The task of describing the required software in a rigorous way is considered as Specification. Fine tune applications can easily be understood with the help of successfully written specifications. Prior specification of the safety critical software system is done well carefully before the application development. Specifications are necessary for stable external interfaces.
Software Architecture
An abstract representation of a system is generally referred to as software system architecture. Architecture generally includes making sure that all the requirements of the product are fulfilled by the software system and also ensure that it will meet the requirements in future as well. The software architecture also shows the interfaces between other software products and the software system, as well as the host operating system and the underlying hardware.
Implementation (or coding)
Coding means reducing an already ready design to give it a more executable form but it cannot be considered are one of the largest part of software engineering job.
Testing
This is one of the most important task handled by a software engineer where he has to combine two different works or codes, test them in various part and putting them altogether.
Documentation
Documentation is done considering the future enhancement and maintenance of the software. It covers documenting its internal design. External Interfaces must have documentation.
Maintenance
Maintaining is more difficult than developing of software as it has to cover up the new requirements which come with time and many new discovered problems. A software engineer has to put a lot of effort as he has to add and make changes to the code anytime which sometimes may not be accepted in original design. Maintenance is directly the two third part of whole software engineering process. Fixing bugs in software from time to time is the smallest essential part of Maintenance.
Design Document
When a software developer writes the description of a software product in order to guide its team the overall architecture of the software project, the written document is known as Design Document. A design document comprises of an architecture diagram with pointers which specify the details and the features of smaller parts of the design. Design document helps in coordination with large team. A stable reference and a common outline of the working of the software is a necessary part of the design document. The model which consists of four distinct activities: interface design, data design, procedural design and architectural design is known as Software Design Document (SDD).
The SDD contains the following documents:
- Data Design
- Architecture Design
- Interface Design
- Procedural Design
-
The structures present within the software are described by Data Design. The choice of data structures is dictated by relationships between data objects and its attributes.
-
The mapping of information flow characteristics into the program structure is done in Architecture Design. Transformation mapping is used to distinctively exhibit the boundaries of out coming and incoming data.
-
The design of human interface and the description of internal and external program interfaces are being done through Interface Design. These interfaces are based on the output of the analysis model.
-
The description of structured programming by using tabular, graphical and textual notations is covered under Procedural Design. It helps in facilitating the designer in translating the code. This is basically considered as blue print of the software which is the sole base of all the further software works.
Design Documents have two types: HLDD - High Level Design Document and LLDD - Low Level Design Document.