Software and System Engineering
Hire us to design your system and help develop a plan for development.
Software can be developed without a design and sometimes this works out well enough to get the job done. However, lack of design and architecture can reach complexity limits rather rapidly so that it becomes much more difficult to continue development. The level of uncertainty increases exponentially as more and more development is done without any real plan–eventually it becomes impossible to anticipate how long things are going to take and how well they’ll work once done.
The engineers at Strange Crew take design very seriously. This does not necessarily mean having a big up-front design that encompasses everything but does require at least some forthought as to how the system will be structured as each change is instituted. In some cases, such as with the more rigorous medical grades, it is necessary to have a concrete up-front design that accounts for everything. Our developers can do both extremes. We are familiar with good architecture and how to rationally judge one form over another. We don’t need to do this all up front–we don’t need to write diagrams since the code already contains the architecture–but we very much can and we can help guide your change processes to ensure that your architecture models remain relevant and updated.
We make use of two modeling languages: UML and SysML.
UML
UML is the most commonly used modeling language today. It is not well understood by everyone, but our developers spend time and effort learning its effective use. UML can be used to model a software product design, but it lacks some features that are needed for a fuller view of your system. The most common diagram people are used to is the class diagram but there are several others that can help document a systems structure, behavior, and deployments.
SysML
SysML is an extension of UML which uses the features of that language to add more diagrams and structures. One of the most important features of SysML from a regulatory position is the tracibility built into the language. SysML has a new requirements diagram along with requirement objects themselves and their relations to each other and other things like components, classes, or files. Additionally there are test case objects that can be linked through trace relationships to the requirements that they are validating. This is incredibly useful to meet the documentation requirements of your design inputs and their validations. Additionally, the block diagrams provide a more abstract overview of the system that can be discussed, simulated, and eventually implemented.
SysML models more than just software but can also document processes that don’t involve computing at all. Business processes can be modeled with SysML for example. Additionally the interfaces between the software aspects of the system and the other aspects of the system, such as human or real-world events, can be modeled as part of the system rather than remaining separate. This makes it easier to model a holistic view of your system.