Systems Design is widely regarded as one of the most demanding aspects of being a systems engineer. If you don’t come from a background in the system you’re designing, the odds may seem stacked against you. But fear not! In this comprehensive guide, we will explore effective strategies to overcome these challenges by applying ISO15288 processes and employing logical thinking.
When it comes to systems design, there’s a growing belief among experts that “pragmatism overrules process.” This means that while processes are important, practicality and real-world considerations should take precedence. With this principle in mind, let’s dive into the crucial task of creating a systems design description.
By this point in your project, you’ve likely made progress in defining the requirements and architecture. You have a good understanding of what the system needs to achieve its mission. Now, it’s time to get down to the nitty-gritty details of the design.
By acknowledging your lack of expertise, you gain the power?
The first principle to embrace during the design phase is the advantage of not being an expert in the specific domain. You might think, “Wait, how is that an advantage?” Well, by acknowledging your lack of expertise, you gain the power of a beginner’s mindset. This mindset allows you to approach the design process with fresh eyes and an unbiased perspective. You can focus solely on the requirements and have a clear picture of what needs to be done. A beginner’s mindset helps you avoid the limitations of preconceived ideas and encourages you to go back to basics.
However, it’s important to strike a balance. While a beginner’s mindset is valuable, it’s equally important to collaborate with domain experts. If you’re not a domain expert yourself, working closely with those who are can ensure you stay on the right path. Designing a system can lead you down various rabbit holes that are off-topic and unnecessary. To navigate these challenges, start by creating a skeleton structure for your design description. Outline the headings and bullet points that will guide your content. Once you have a framework, review it with an expert to validate your design direction. This collaboration saves you time, effort, and potential headaches.
Now, let’s explore what should be included in a comprehensive design description. By merging the ISO15288 standard with valuable insights from Systems and Software Engineering (SOSE), we’ve compiled a rough skeleton to guide aspiring systems designers. A well-rounded Design Description should cover the following aspects:
- Allocating requirements to system architecture: Linking the requirements to the overall system architecture.
- Justifying design choices: Explaining the rationale behind specific design decisions in relation to the requirements and architecture.
- Identifying desirable design characteristics and behaviors: Defining the qualities and behaviors that the system should exhibit.
- Leveraging design enablers: Using models, heuristics, and other tools to facilitate the design process.
- Defining interfaces: Identifying the interfaces that are being used or need further clarification.
- Identifying system elements: Breaking down the system into its constituent elements.
- Defining design characteristics of system elements: Describing the specific design attributes of each system element.
- Assessing alternatives for system elements: Considering different options and evaluating their suitability for each element.
- Specifying implementation details: Providing specifics on how system elements will be implemented. For mechanical systems: Addressing aspects such as shape, dimension, weight, and motion. For software systems: Considering factors like data structures, control mechanisms, and design patterns.
- Assessing design holistically: Ensuring that the design takes a comprehensive and integrated approach.
- Defining implementation methods: Outlining the methods and techniques to be used for implementing system elements.
- Specifying inputs: Detailing how data is received and trigger events within the system.
- Defining the functional process: Describing the step-by-step flow of the system’s functional process.
- Identifying key items for execution: Outlining the crucial tasks or actions that must be executed as part of the process.
- Assigning system elements to processes: Identifying the specific system elements responsible for carrying out each process.
- Describing system element attributes: Defining the attributes of each system element, such as size, shape, and style.
- Specifying output/export of information: Detailing the information that is generated or exported by each system element.
- Defining interfaces and their functionality: Clearly defining how the interfaces between system elements work and what they enable.
Essentially, a design description aims to specify “what is needed” to fulfill the requirements of the system. While some aspects of “how” may be covered, it is common for subsystem experts to handle the finer implementation details. As a Systems Engineer, your focus is on the broader context and ensuring a cohesive design.
Embrace the principles of recursion and iteration
Once you start identifying and documenting the content outlined above, it’s crucial to embrace the principles of recursion and iteration. Recursion involves delving into successive layers of design, considering the interactions and dependencies between elements. Iteration, on the other hand, involves continuous refinement and improvement through design reviews and feedback loops. These principles are the backbone of successful systems engineering and will guide you towards a robust and effective design.
In conclusion, mastering systems design is a challenging but rewarding endeavor. By applying ISO15288 processes, embracing a beginner’s mindset, collaborating with domain experts, and following the principles of recursion and iteration, you can overcome the complexities of systems design. Remember, becoming a proficient systems engineer is an ongoing journey that requires continuous learning and practice.