Software Engineering
Software Engineering
Software Engineering
DESIGN
Software design is the process of planning and organizing the structural components
of a software system. It’s like creating a blueprint for building programs that meet
user needs and work well. Here are some key points:
1. Abstraction and Modularity: Break down complex tasks into smaller,
manageable parts. Abstraction hides unnecessary details, while modularity
promotes separation of concerns.
2. User Interaction (UI/UX): Design how users will interact with the software.
This includes creating intuitive interfaces and ensuring a positive user
experience.
3. Security: Consider how to keep data safe within the software.
4. General Tasks Involved:
1. Requirements Analysis: Understand user needs and system requirements.
2. Architectural Design: Define the overall structure, components, and their
interactions.
3. Detailed Design: Specify algorithms, data structures, and interfaces.
4. Interface Design: Define communication between different modules.
5. Data Design: Plan data storage and retrieval mechanisms.
6. Component-Level Design: Design individual modules or classes.
7. Testing and Validation: Ensure the design meets requirements.
5.Design Principles:
Traceable to Analysis Model: The design should satisfy all requirements from
the analysis phase.
Minimize Intellectual Distance: Bridge the gap between real-world problems
and software solutions.
Exhibit Uniformity and Integration: Maintain consistency throughout the
design.
Accommodate Change: Design should be flexible to adapt to user needs.
Degrade Gracefully: Software should handle errors gracefully during
execution.
Assess for Quality: Evaluate the design’s quality.
Review to Discover Errors: Regularly review the design.
Remember: Design is not coding; it describes the logic, while coding
implements it
Certainly! Good software design is crucial for creating high-quality software. It involves planning and
organizing the structural components of a system. Here are the key criteria for enhancing software
quality:
1. Functionality: The software meets requirements and behaves as expected in its intended
environment.
3. Reliability: Free of defects, performs consistently, and accurately under various conditions.
Interface Design
Interface design is the specification of the interaction between a system and its
environment. This phase proceeds at a high level of abstraction with respect to the
inner workings of the system i.e, during interface design, the internal of the systems
are completely ignored, and the system is treated as a black box. Attention is focused
on the dialogue between the target system and the users, devices, and other systems
with which it interacts. The design problem statement produced during the problem
analysis step should identify the people, other systems, and devices which are
collectively called agents.
Architectural Design
Architectural design is the specification of the major components of a system, their
responsibilities, properties, interfaces, and the relationships and interactions between
them. In architectural design, the overall structure of the system is chosen, but the
internal details of major components are ignored. Issues in architectural design
includes:
1. Gross decomposition of the systems into major components.
2. Allocation of functional responsibilities to components.
3. Component Interfaces.
4. Component scaling and performance properties, resource consumption
properties, reliability properties, and so forth.
5. Communication and interaction between components.
Detailed Design
Detailed design is the specification of the internal elements of all major system
components, their properties, relationships, processing, and often their algorithms
and the data structures. The detailed design may include:
1. Decomposition of major system components into program units.
2. Allocation of functional responsibilities to units.
3. User interfaces.
4. Unit states and state changes.
5. Data and control interaction between units.
6. Data packaging and implementation, including issues of scope and
visibility of program elements.
7. Algorithms and data structures.
Importance of System Architecture Design:
1. Structuring: System architecture provides a framework for organizing components, ensuring
clarity and coherence.
2. Parallel Development: It allows concurrent development of subsystem specifications.
3. Manufacturing and Costing: Enables hardware manufacturing by sub-contractors and
provides a model for system costing
Structure Charts
A structure chart (also known as a module chart or hierarchy chart) is a graphical representation of a
software system’s components. It showcases the hierarchical relationships between modules. Here are the
key points about structure charts:
BEGIN
NUMERIC nNum1, nNum2
INPUT nNum1, nNum2
IF nNum1 > nNum2 THEN
DISPLAY "The largest number is", nNum1
ELSE
DISPLAY "The largest number is", nNum2
END IF
END