3. Software Design:
Software design provides a design plan that describes the elements of a system, how they fit, and
work together to fulfill the requirement of the system.
There are 4 phases of a software design:-
1. Data Design – This phase produces data structures.
2. Architectural Design – This phase produces structural units.
3. Interface Design – This phase specifies the interfaces between units.
4. Procedural Design – This phase specifies the algorithms of each method.
4. Software Architecture:
The architecture of a system is a comprehensive framework that describes its form and structure -
its components and how they fit together.
Software architecture must model the structure of a system and the manner in which data and
procedural components collaborate with one another.
5. Software Architecture (Cont.):
Goals:-
1. Defines the structure of the system.
2. Realizes all the use-cases.
3. Handles both functional and quality requirements.
4. Reduce the goal of ownership and improves the organization’s market position.
5. Improves quality and functionality offered by the system.
6. Software Architecture (Cont.):
Limitations:-
1. Lack of tools and standardized ways to represent architecture.
2. Lack of analysis methods to predict whether architecture will result in an implementation that
meets the requirements.
3. Lack of awareness of the importance of architectural design to software development.
4. Lack of understanding of the role of software architect and poor communication among
stakeholders.
5. Lack of understanding of the design process, design experience and evaluation of design.
7. Data Modeling:
Data modeling is the process of creating a data model for the data to be stored in a Database.
This data model is a conceptual representation of Data objects, the associations between different
data objects and the rules.
Data modeling helps in the visual representation of data and enforces business rules, regulatory
compliances, and government policies on the data.
Data model emphasizes on what data is needed and how it should be organized instead of what
operations need to be performed on the data.
8. Data Modeling (Cont.):
Why Data Modeling?
- Ensures that all data objects required by the database are accurately represented.
- A data model helps design the database at the conceptual, physical and logical levels.
- It provides a clear picture of the base data and can be used by database developers to
create a physical database.
- It is also helpful to identify missing and redundant data.
- Though the initial creation of data model is labor and time consuming, in the long run, it
makes the IT infrastructure upgradeable and maintainable cheaper and faster.
9. Data Modeling (Cont.):
Types of Data Modeling:-
1. Conceptual Data Modeling –
It defines WHAT the system contains.
2. Logical Data Modeling –
It defines HOW the system should be implemented regardless of Database Management
System.
3. Physical Data Modeling –
It describes how the system will be implemented using a specific Database Management
System.
10. Database:
Database Design is a collection of processes that facilitates the designing, development,
implementation and maintenance of data management systems.
Why database designing is important?
1. To meet requirements of the users.
2. High Performance
Database is designed in two ways:-
1. Database Logical Design – It defines a database in a data model of a specific DBMS.
2. Database Physical Design – It defines the internal database storage structure, file organization
or indexing techniques.
12. Database (Cont.):
Requirement Analysis –
Planning - This stage is concerned with planning of entire Database Development Life Cycle.
System definition - This stage defines the scope and boundaries of the proposed database system.
Database Design –
Logical model - This stage is concerned with developing a database model based on requirements. The entire
design is on paper without any physical implementations or specific DBMS considerations.
Physical model - This stage implements the logical model of the database taking into account the DBMS and
physical implementation factors.
Implementation –
Data conversion and loading - This stage is concerned with importing and converting data from the old system
into the new database.
Testing - This stage is concerned with the identification of errors in the newly implemented system .
13. Data Warehouse:
Data warehouse modeling is the process of designing the schemas of the detailed and
summarized information of the data warehouse.
The goal of data warehouse modeling is to develop a schema describing the reality, or at least a
part of the fact, which the data warehouse is needed to support.
Data warehouse modeling is an essential stage of building a data warehouse for two main reasons:
1. Through the schema, data warehouse clients can visualize the relationships among the
warehouse data, to use them with greater ease.
2. A well-designed schema allows an effective data warehouse structure to emerge, to help
decrease the cost of implementing the warehouse and improve the efficiency of using it.
14. Analyzing Alternative Architectural Designs:
There are two different approaches for the analysis of alternative architectural designs. The first
method uses an iterative method to assess design trade-offs. The second approach applies a
pseudo-quantitative technique for assessing design quality.
An Architecture Trade-off Analysis Method (ATAM):-
The Software Engineering Institute (SEI) has developed an architecture trade-off analysis method that
establishes an iterative evaluation process for software architectures. The design analysis activities
that follow are performed iteratively:
1. Collect scenarios – A set of use-cases is developed to represent the system from the user’s point
of view.
2. Explicit requirements, constraints, and environment description – This information is required as
part of requirements engineering and is used to be certain that all customer, user, and stakeholder
concerns have been addressed.
15. Analyzing Alternative Architectural
Designs (Cont.):
3. Describe the architectural styles/patterns that have been chosen to address the scenarios
and requirements.
4. Evaluate quality attributes by considering each attribute in isolation. The number of quality
attributes chosen for analysis is a function of the time available for review and the degree to which
quality attributes are relevant to the system at hand. Quality attributes for architectural design
assessment include reliability, performance, security, maintainability, flexibility, testability, portability,
reusability, and interoperability.
5. Identify the sensitivity of quality attributes to various architectural attributes for a specific
architectural style. This can be accomplished by making small changes in the architecture and
determining how sensitive a quality attribute, say performance, is to the change. Any attributes that are
significantly affected by variation in the architecture are termed sensitivity points.
16. Analyzing Alternative Architectural
Designs (Cont.):
Quantitative Guidance for Architectural Design:-
One of the many problems faced by software engineers during the design process is a general lack of
quantitative methods for assessing the quality of proposed designs. The ATAM approach is
representative of a useful but undeniably qualitative approach to design analysis.
Work in the area of quantitative analysis of architectural design is still in its formative stages. A number
of pseudo-quantitative techniques that can be used to complement the ATAM approach as a method
for the analysis of architectural design quality have been suggested.
17. Analyzing Alternative Architectural
Designs (Cont.):
1. The first model, called spectrum analysis, assesses an architectural design on a “goodness”
spectrum from the best to worst possible designs. Once the software architecture has been proposed,
it is assessed by assigning a “score” to each of its design dimensions.
2. Design selection analysis is another model that requires a set of design dimensions to be defined.
The proposed architecture is then assessed to determine the number of design dimensions that it
achieves when compared to an ideal (best-case) system.
18. Architectural Complexity:
A useful technique for assessing the overall complexity of a proposed architecture is to consider
dependencies between components within the architecture. These dependencies are driven by
information/control flow within the system.
There are 3 dependencies:-
1. Sharing Dependencies
2. Flow Dependencies
3. Constrained Dependencies
19. Architectural Complexity (Cont.):
Sharing Dependencies –
- It represents the dependence relationship among consumers who use the same
resource or producers who produce for the same consumers.
Flow Dependencies –
- It represents dependence relationship between producers and consumers of resources.
Constrained Dependencies –
- It represents constraints on the relative flow of control among a set of activities.