53 minutes ago, mr_tawan said:
and then update the spec with the outcome from the research
May be we mean something differend under specs terms, but here it mean "list of requirements that system have to meet".
For example one of stability-requirments: system have to be able work without software, malfunctions reboots and maintence at least 10k hours. sheduled maintenxe downtimw have not exids 2 hours. In case of malfunction repairments downtime must not exids 45 minutes. Time to switch control lines to stand-by control system have not exids 2 minutes.
Other requirements equipment related: rolling mill forces have not exids Fmax meganewtons. Torque of main engine have not exids Tmax H*m. Current of main engine must not exids Amax ampers. etc.
Other requirments final production tolerance related: system must be able to produce 8 - 60mm sheets with 0.1mm tolerance. Temperature tolerance before first and after last milling pass must not exids 5С from values given by steel testing laboratory for processed kind of steel.
And anything of it is not subject of change or even dispute, becouse come from equipment abilities and requirements for final production quality, so violation of it will affect product quality or cause serious equipment damages anf personel injurities.
Other minor requrements of cource may be changed. For example requirment "rollgangs motors not involved into work have to be switched to stand-by mode" may be changed to "have to be turned of" and vice verse. but changes like it very easy to implement by data-driven way.
But those requirments is not describe how system have to be sedigned or even on wich principles it have to work to meet it. It just a source for creation of big book called a "task description" that consists of parts like "mathematical description" that exactly describe any involved mathematical methods and relations betwin them, "information description" that complete describe data formats, network protocols, placement of control terminals and roles of ppersonel that interact with a system, and so on, "measurment tools description" that describes a involved sensors and requirments when and how to make mesuarments and so on (really it is a big stand of books) . And only when it document complete ready it have sence to start a design of software architecture. Just becouse anything of it required to core system functionality such as computing of rolling schema. Also anything of it can not be changed even litlle bit until customer purchase new rolling mill and can not be significant changed until god issue new Newton, Young, Ohm and other physical laws. So it have no any sence to split analize to iterations, especiall becouse it is not a option to make a partial functionality and especially partial stability or partial bug-free prototype into this case. Also whole system description allows to determine a similar functionality and make any functionality only once (main head pain of iterative is doubling of same functionality). Of course implementation using split by modules that firstly using data stubs to debug it, then connected to data that comes from other modules after it implemented. But removing of stubs is not a iterations. Other modules implementation can be done parallely by bigest team, but usualy teams is not so big becouse task is higly complexive and entry time is very big, and code implementation can use a common components that after data-driven adjustments can be used into any input signal processing and output signal generation purposes. Also it is plenty of same complexiti tasks on other production zones of same plants each of wich have to have his own automation system that control his own different process. So SCRUM/AGILE and other "write prototype without detailed analize" metodologies just never will work for complexive software.
Same into bussines accounting software - than deeper and you "drill" field in whole task scale than simpliest ways of solution you have. Even in case govermet issued lows changes little bit frequently then god issued. I has not so big expirience into accounting software becouse has shifted to FA field just after graduated from university. Just for example when i has been a 15 years shcoolboy a has designed a sowtware thet school administration used to compute teachers salary. by first look to specs given by accountant it realy huge task. it have at least 3 pages list of kinds of accurals and deduction. so i has start to research how to compute it. after a half of hour talks with accountant i has clear that it is only 3 algo of accurals - working hours based, work quantity done based and percentage of average previouse month salary based, and 3 algo of deductions - fixed amount, fixed percent and progressive percent. So shortly i has implemented and testsed 6 tiny subroutines for each case, table that consists of codes names algo id and actual taxes and main routine that has collect input data by table, call required algo, collect and sum results and finally print out a hard copy of receipt. Unfortunately school have only some soviet clones of PDP-11 at this time, with only working remote 360KB floppy drive for 13 machines, so it has been no any chance to involve database or even file storage to store constant employes and lookup table data, so accounter have to enter same data each month and kinds lookup table has been organized as a constant array into source code, but it allow to speed up work of accounter at least 10 times and still have easy adjustments to salary lows changes. Of cource not all into accounting and bussines software such easy, but this story show a key difference betwin designing software iteratively based on customer specs and designin on task description based on complete field analises that done by developer with involving of task field professional.