Software Design

From Computer Science Wiki
Revision as of 13:58, 3 January 2023 by Bmackenty (talk | contribs)

Students must be able to discuss the iterative nature of the design and development stages of SDLC, and the extent to which key stakeholders are involved in the process.[edit]

The software development life cycle (SDLC) is a process that is used to develop software systems. It is an iterative process, which means that it consists of a series of repeated cycles or steps that are followed in a specific order to create a working software system.

The design and development stages of the SDLC are typically iterative in nature because they involve a series of activities that are repeated until the desired result is achieved. During these stages, the software is designed, implemented, and tested, and any issues or problems that are identified are addressed and resolved.

Key stakeholders are involved in the process throughout the SDLC, as they have a vested interest in the outcome of the project and can provide valuable input and guidance. Some of the key stakeholders that may be involved in the design and development stages of the SDLC include the software developers, project managers, customers, and end users.

During the design stage, stakeholders may be involved in defining the requirements for the software, determining the overall architecture and design of the system, and identifying any potential risks or issues that may need to be addressed. In the development stage, stakeholders may be involved in reviewing and approving the design, providing feedback on the implementation, and testing the software to ensure that it meets the required specifications.

Overall, the extent to which key stakeholders are involved in the design and development stages of the SDLC will depend on the specific needs and requirements of the project, as well as the roles and responsibilities of the stakeholders.

Students must be able to apply computational thinking concepts to design and develop a model of a system, including abstraction, decomposition, algorithm design, and pattern recognition.[edit]

Computational thinking is a way of thinking about and solving problems that involves breaking complex problems down into smaller, more manageable pieces and using logical reasoning to develop solutions. It involves several key concepts that can be applied when designing and developing a model of a system, including:

Abstraction: This involves identifying the key features and characteristics of a problem or system and focusing on those aspects while ignoring unnecessary details.

Decomposition: This involves breaking a complex problem or system down into smaller, more manageable pieces that can be more easily understood and solved.

Algorithm design: This involves developing a step-by-step plan or set of instructions for solving a problem or achieving a specific goal.

Pattern recognition: This involves identifying patterns or trends in data or information that can be used to make predictions or inform decision-making.

To apply these concepts when designing and developing a model of a system, it is important to first identify the problem or goal that the model is intended to solve. This may involve using abstraction to identify the key features and characteristics of the problem or system. Once the problem or goal is clearly defined, it can be broken down into smaller, more manageable pieces using decomposition. This can help to simplify the problem and make it easier to develop a solution.

Next, an algorithm can be designed to provide a step-by-step plan for solving the problem or achieving the goal. This may involve identifying patterns or trends in the data or information that can be used to inform the algorithm. Finally, the model can be tested and refined as needed to ensure that it is effective at solving the problem or achieving the desired result.


Students must be able to discuss the advantages of using diagrams rather than a text-based description of a system.[edit]

There are several advantages to using diagrams rather than a text-based description when representing a system:

Visual representation: Diagrams provide a visual representation of a system, which can make it easier for people to understand and interpret the information. This is particularly helpful when the system is complex or has many interconnected parts.

Increased clarity: Diagrams can clearly show the relationships and connections between different parts of a system, which can help to make the information more organized and easier to understand.

Improved communication: Diagrams can be an effective tool for communicating information about a system to others, as they can provide a clear and concise overview of the system's structure and function.

Enhanced problem-solving: Diagrams can be useful for identifying and solving problems within a system, as they provide a visual representation of the system that can help to highlight any issues or weaknesses.

Overall, using diagrams to represent a system can be a more effective way of communicating and understanding complex information than using a text-based description alone.


Students must be able to interpret system overview diagrams that provide a technical blueprint of how a system works, including UML, UI System flow, Component design, ERD diagrams, and System mapping.


There are several types of system overview diagrams that can provide a technical blueprint of how a system works:

UML (Unified Modeling Language) diagrams: These are a type of diagram that is used to represent the structure and behavior of a system. They can include a variety of different diagram types, such as class diagrams, activity diagrams, and sequence diagrams, which can be used to represent different aspects of the system.

UI (User Interface) System flow diagrams: These diagrams provide a visual representation of the flow of information and interactions between the user and the system. They can be used to design and document the user interface of a system.

Component design diagrams: These diagrams show the relationships and interactions between the different components or modules of a system. They can be used to design and document the architecture of a system.

ERD (Entity Relationship Diagram) diagrams: These diagrams show the relationships between different entities in a database or system. They can be used to design and document the database structure of a system.

System mapping diagrams: These diagrams provide an overview of the overall structure and organization of a system. They can be used to document the various components and their relationships to each other.

To interpret these diagrams, it is important to understand the purpose and meaning of each type of diagram, as well as the conventions and symbols that are used to represent different aspects of the system. By examining the diagram and understanding the relationships and interactions between the different elements, it is possible to gain a better understanding of how the system works.


Students must be able to describe the following diagrams and their use: UML, UI system flow, Component design; ERD; System mapping; Data Flow (DFD); User Interface.[edit]

UML (Unified Modeling Language) diagrams: These are a type of diagram that is used to represent the structure and behavior of a system. They can include a variety of different diagram types, such as class diagrams, activity diagrams, and sequence diagrams, which can be used to represent different aspects of the system. UML diagrams are often used in software engineering to design and document software systems.

UI (User Interface) System flow diagrams: These diagrams provide a visual representation of the flow of information and interactions between the user and the system. They can be used to design and document the user interface of a system, including the layout of the user interface and the various elements that make up the interface.

Component design diagrams: These diagrams show the relationships and interactions between the different components or modules of a system. They can be used to design and document the architecture of a system, including the structure and organization of the various components.

ERD (Entity Relationship Diagram) diagrams: These diagrams show the relationships between different entities in a database or system. They can be used to design and document the database structure of a system, including the relationships between different tables and the data they contain.

System mapping diagrams: These diagrams provide an overview of the overall structure and organization of a system. They can be used to document the various components and their relationships to each other, as well as the flow of information and processes within the system.

Data Flow (DFD) diagrams: These diagrams show the flow of data within a system, including the processes that transform the data and the paths that the data follows. They can be used to understand how data is processed and moved within a system.

User Interface diagrams: These diagrams provide a visual representation of the user interface of a system, including the layout and design of the interface and the various elements that make up the interface. They can be used to design and document the user experience of a system.


=== Students must be able to demonstrate how to devise a testing strategy that will generate data to evaluate if a system meets the success criteria.

===

To devise a testing strategy that will generate data to evaluate if a system meets the success criteria, you can follow these steps:

Define the success criteria: First, you need to clearly define the success criteria for the system. This should include the specific requirements or expectations that the system must meet in order to be considered successful.

Identify key areas to test: Next, you need to identify the key areas of the system that should be tested in order to evaluate whether it meets the success criteria. This may include specific features or functions, performance characteristics, or usability requirements.

Determine the types of tests to be performed: Once you have identified the key areas to test, you need to determine the types of tests that will be used to evaluate the system. This may include unit tests, integration tests, system tests, and acceptance tests, among others.

Design the test cases: For each type of test, you need to design a set of test cases that will be used to evaluate the system. Test cases should be designed to cover a range of different scenarios and test the system against the defined success criteria.

Execute the tests: Once the test cases have been designed, you need to execute the tests and gather the data that is generated. This may involve running the tests manually or using automated testing tools.

Analyze the data: After the tests have been run, you need to analyze the data that has been generated to determine whether the system meets the success criteria. This may involve comparing the results of the tests to the defined success criteria and identifying any areas where the system does not meet the criteria.

Document the results: Finally, you need to document the results of the testing, including any issues or problems that were identified and any recommendations for improvement. This documentation can be used to inform future updates or modifications to the system.