Different Approach of Software Design
Different Approach of Software Design
Function-Oriented Design focuses on real-world functions as the primary abstraction, decomposing the system into interacting modules with clearly defined functions . In contrast, Object-Oriented Design centers on data abstraction, representing systems as collections of objects that encapsulate both data and behaviors, with real-world entities modeled as classes and objects . This fundamental difference impacts how each design method organizes and solves problems, with FOD emphasizing tasks and processes, whereas OOD emphasizes entities and interactions .
Function-Oriented Design handles system processing by structuring the design around functional modules with centralized state information often held in shared memory. This approach focuses on sequences of actions and data transformations . Conversely, Object-Oriented Design distributes state information among objects, which encapsulate their data and manage state internally. Processing is organized around interactions between these self-contained entities, emphasizing communication and message passing rather than centralized processes .
Inheritance in Object-Oriented Design allows subclasses to inherit fields and methods from their parent classes, promoting reusability of code by enabling shared method implementations across multiple classes. This property facilitates the creation of new classes based on existing ones, reducing redundancy and enhancing code maintainability . Moreover, it enables the construction of a hierarchy where classes are organized in a structured manner, allowing for the definition of general and specific class relationships .
Unified Modeling Language (UML) in Object-Oriented Design provides a robust set of graphical tools for representing system components, their interactions, and behaviors, emphasizing use cases, classes, activities, and states . UML aids in visualizing system architecture and object interactions, facilitating clear communication and documentation. In contrast, structured charts in Function-Oriented Design focus on decomposing systems into hierarchical modules, highlighting processes and data flow over object relationships . These constitute fundamentally different approaches to capturing system architecture, with UML supporting a more integrated view of objects and interactions within software systems .
Object-Oriented Design handles complexity by focusing on abstraction, which emphasizes defining complex systems in simpler terms by highlighting essential characteristics while hiding non-essential details. This approach enables designers to model real-world scenarios more naturally by representing entities as objects that encapsulate data and behavior, closely mirroring how objects interact in the real world . Abstraction lowers cognitive load for developers, facilitating easier design, modification, and extension of software systems .
Polymorphism in Object-Oriented Design allows methods to perform the same operation in different ways depending on the object that invokes the method, typically by allowing different classes to share the same interface . This flexibility enables developers to extend or change parts of the system with minimal impact on other components, facilitating easier updates and maintenance. It supports the "open/closed" principle of software design, where software entities should be open for extension but closed for modification .
Pseudo-code aids system design by providing a clear, language-like framework to express algorithmic flow and logic without the syntactical complexity of actual coding languages. During preliminary design, pseudo-code helps conceptualize and validate ideas, ensuring they align with requirements. In the detailed phase, it serves as an intermediate step towards actual programming, facilitating communication among designers and programmers by offering a uniform, understandable format for conveying process steps .
Encapsulation in Object-Oriented Design offers several advantages, such as protecting an object's internal state by restricting external access and manipulation, which enforces integrity and security . By bundling data with methods that operate on it, encapsulation facilitates modularity, allowing objects to be treated as black boxes that reveal only what is necessary. This contributes to easier maintenance and reduces dependencies between different parts of the program .
A data dictionary in Function-Oriented Design documents all data elements and data flows in the Data Flow Diagram (DFD) model of a system. It provides a standard vocabulary for data elements, reducing misunderstandings among project members, particularly in extensive projects with varied terminologies . The dictionary also helps define composite data structures by detailing their components, which aids in maintaining consistency and clarity in design specifications .
The primary processes involved in layered technology are communication, planning, modeling, construction, and deployment. Communication is crucial for understanding client requirements; planning involves outlining steps to address project complexity. Modeling corresponds to creating representations of the system as per client understanding . Construction involves the actual coding and testing, while deployment transitions the software to the client for feedback and evaluation. Each process builds upon the previous one, creating a structured approach that ensures development aligns with specified needs and constraints .