How to make a large project?

Is there a maximum limit of 2Gbyte of usable memory also for the 64bit versions of Access?
the 2Gb refers to file size, not memory usage. Since your data is going to be in sql server, that parameter is irrelevant. What will matter is how much data you 'bring across' from sql server to sit in memory.

A relatively modern low end computer typically has 8Gb of memory, and a high end 32gb or more. Of this, Windows and associated apps take around 4Gb, leaving 4Gb (for low end) for other apps - such as outlook, excel, access etc. If you (or your users) are using a virtual drive with a windows OS then each of these will take around 4gb - so a low end computer will struggle for memory with a virtual drive. Note the more memory you have, the more Windows may take to optimise its own performance - so with 32gb memory, Windows may take 10-12Gb

Easy enough for you to monitor - see the performance tab in the task manager. Open the apps you would normally have open (or you expect your users to) to get a baseline - then open an access app and see how the usage changes. To see how memory is affected, do things in access such as connect to sql server, open a form to display a few records, another with lots of records, whatever floats your boat and meets the potential needs of your project.
 
I have 64Gb of memory in my Laptop.
As I write this with an RDP session open, 10 + tabs on DuckDuckGo browser, A PDF open in Chrome, Excel, Outlook, WhatsApp, SSMS, Sonos Desktop App, Teams, Notepad++, Toggle(time recording app) and a fairly chunky Access application open on a complicated form with lots of sub forms, my memory usage seems firmly pegged down at 20.5Gb or about 33%.

Windows definitely does grab a percentage of what's available. SQL Server if you decide to run it on a local machine is a real resource hog.
 
I understand what you mean, and I sincerely appreciate the time spent on the explanation above
Which however does not affect the problem posed in the slightest

So, let's say I want to start a project (I'm talking about forms/reports/code, the data is on a classic db server), which allows the overcoming of the technical limits linked to each single Access file
And so if the maximum limit of forms that can be contained in a single Access file is 1000 then my project will have to include at least 1001 forms, same thing for reports, same exact thing for code

I ask this because once the optimal structure of the project has been found (and I mean the way to update the procedures, the way to reconnect the data tables, the way to control user access to the various objects, etc...) so that it allows to overcome the limit of objects of a single Access file then the thing is done
If this thing has never been done, and is therefore a novelty, it seems to me an excellent reason to find a solution, not a reason to to desist
Seriously, I don't see how you can need over 1000 forms.
 
Is there a maximum limit of 2Gbyte of usable memory also for the 64bit versions of Access?

Unfortunately, yes.

I'll try to explain. Windows was developed at a time when people talked about "memory models" - having to do with how the hardware memory management system worked. Different versions of memory management hardware provided different amounts of address space. These models started with the "16 bits is all you've got" model based on 16-bit addressing of the Intel 8008 chip. Those machines could NEVER exceed 64K of RAM. But over time, models progressed.

Office 32-bit versions grew up with the "large memory model" that says that you have two major divisions of any Office task memory. Using the then-current 32-bit model, they took the 32-bit address pointers and sub-divided them. The two divisions were then two semi-independent "address spaces" in which Access, all of its libraries, and anything else you had, all would get placed into one or the other of the two spaces.

In this model, "low" memory (0h00000000 - 0h7FFFFFF) was for MSACCESS.EXE itself plus any library references, the program stack & program heap (two large working areas) and a few other elements. Library references could go anywhere within the low space because they are called "dynamic link libraries" in which all addressing is relative to where it is located. That is, if you know about the hardware registers of your machine, the Program Counter (which is a register that keeps track of the next instruction to be executed) can be used as an offset for addresses so that you could drop it anywhere in memory and just have a pointer to that location to find the entry points in that library. The Stack Pointer register was also used for calls that established a stack "frame" - basically, the data structure that temporarily holds all of the local variables of any sub/function.

The low memory would be where you had all of your library routines that arrived through something OTHER than your VBA code modules. One of the overhead items in that structure is in the bottom of low memory because in that model, the memory management data (identifying the various distinct memory segments in the various distinct program elements) occupied the low 1 MB. Address 0 was NEVER memory mapped (which is how Windows tasks catch undefined addresses - with a memory management exception). Since it is ALL virtually addressed, there can be gaps between modules but the gaps don't waste physical space.

The "high" memory is actually easier. Whatever is in the .ACCDB (or, originally, .MDB) files goes to high memory. Got multiple files with multiple tables? Doesn't matter. The memory management can be dynamically "diddled" so that if you have to address something in file A, the correct pointers can be loaded for it even if the internal addresses would conflict with file B. However, because of these individual files all being developed originally as single files at the time of their development, they are ALL based on the starting address of 0h80000000. So to address the contents of one App file or one BE file, you must load the appropriate memory management pointers when you load the actual address. Now, if you think about it, this is why you cannot have a relationship between tables in different files - only one of the tables can be mapped at a time and for a relationship you need to map TWO tables.

Anyway, because these were 32-bit addresses, their total address space was 2^32 bytes or 4Gb. The subdivision into high and low memory meant that the core code and libraries and memory mapping overhead plus the stack and heap had no more than 2 GB, and whatever you had from DB files had the other 2 GB.

Now come forward in time to the introduction of 64-bit Office. For reasons known only to the MS board of directors, the internal structure of Access was NOT fully upgraded in the same way that Word and Excel were, because Access still is limited to that "large memory model" architecture. It did not get expanded to the "very large" model. It still contains the high/low division to 2 GB each. Even though there have been a FEW improvements including the ability to call routines that use 64-bit addressing (see also PtrSafe discussions), the core of an Access DB file is still firmly rooted in 32-bit memory models and thus is still constrained regarding total size.

Since that "high" segment also encompasses ALL of the .MDB / .ACCDB files and does not overlap into "low" memory, that means you still have no more than 31 bits (2 GB) of address space for a single DB file... but you ALSO have only 2 GB worth of address space for the running application no matter which files it happens to be mapping at the moment. Yes, it CAN address a lot more than 2 GB - but it only can do 2 GB at a time, and no table can cross one of those implied segment boundaries.

@amorosik - I was not attempting to demean you with the joke about the horse, I was attempting to inject levity into what had become a highly contentious thread. But if you note the responses you were starting to get, you will realize that our frustration begins to emerge as we continue to offer our best answers and you continue to reject them.

If your question continues to evoke this kind of response, then from what I am seeing, our responding members can only see two possibilities. First is that you have some agenda to intentionally provoke us. Second is that you have not been able to correctly frame your real question and thus have left us frustrated in trying to understand what you are really asking. That is, we have a "logical communications disconnect" somewhere.
 
It seems to me an excellent reason to find a solution, not a reason to to desist
Imagine a company that wants a single application to do everything - stock management, production control, invoicing, sales, purchase and nominal ledgers HR, payroll, financial management, forecasting, legal, sales and marketing, maintenance, corporate structure, R&D etc and lets add in they also want manage their web site and email as well. One system. Is that what you are imagining?

If so, aside from the fact there are other apps out there that can do certain aspects better than access, do you really want a maintenance person to view HR stuff (they may need to know some information about their subordinates or others within the organisation such as name and position) or sales invoices?

So you build separate apps with designed and limited links to relevant data in other databases as required (sql server should be set up with multiple databases based on function). If you really want the maintenance person to also manage HR you would either provide a button to open the HR app, or add the HR app as a library.

All this can be controlled from one 'master' app which basically only contains a menu for users to select the functionality they require - what the user sees as menu options being controlled by their login profile.

In any event I don't see a problem that requires a solution.

Suggest you describe the scenario you do envisage, What will the envisaged app actually do.
 
Unfortunately, yes.

I'll try to explain. Windows was developed at a time when people talked about "memory models" - having to do with how the hardware memory management system worked. Different versions of memory management hardware provided different amounts of address space. These models started with the "16 bits is all you've got" model based on 16-bit addressing of the Intel 8008 chip. Those machines could NEVER exceed 64K of RAM. But over time, models progressed.

Office 32-bit versions grew up with the "large memory model" that says that you have two major divisions of any Office task memory. Using the then-current 32-bit model, they took the 32-bit address pointers and sub-divided them. The two divisions were then two semi-independent "address spaces" in which Access, all of its libraries, and anything else you had, all would get placed into one or the other of the two spaces.

In this model, "low" memory (0h00000000 - 0h7FFFFFF) was for MSACCESS.EXE itself plus any library references, the program stack & program heap (two large working areas) and a few other elements. Library references could go anywhere within the low space because they are called "dynamic link libraries" in which all addressing is relative to where it is located. That is, if you know about the hardware registers of your machine, the Program Counter (which is a register that keeps track of the next instruction to be executed) can be used as an offset for addresses so that you could drop it anywhere in memory and just have a pointer to that location to find the entry points in that library. The Stack Pointer register was also used for calls that established a stack "frame" - basically, the data structure that temporarily holds all of the local variables of any sub/function.

The low memory would be where you had all of your library routines that arrived through something OTHER than your VBA code modules. One of the overhead items in that structure is in the bottom of low memory because in that model, the memory management data (identifying the various distinct memory segments in the various distinct program elements) occupied the low 1 MB. Address 0 was NEVER memory mapped (which is how Windows tasks catch undefined addresses - with a memory management exception). Since it is ALL virtually addressed, there can be gaps between modules but the gaps don't waste physical space.

The "high" memory is actually easier. Whatever is in the .ACCDB (or, originally, .MDB) files goes to high memory. Got multiple files with multiple tables? Doesn't matter. The memory management can be dynamically "diddled" so that if you have to address something in file A, the correct pointers can be loaded for it even if the internal addresses would conflict with file B. However, because of these individual files all being developed originally as single files at the time of their development, they are ALL based on the starting address of 0h80000000. So to address the contents of one App file or one BE file, you must load the appropriate memory management pointers when you load the actual address. Now, if you think about it, this is why you cannot have a relationship between tables in different files - only one of the tables can be mapped at a time and for a relationship you need to map TWO tables.

Anyway, because these were 32-bit addresses, their total address space was 2^32 bytes or 4Gb. The subdivision into high and low memory meant that the core code and libraries and memory mapping overhead plus the stack and heap had no more than 2 GB, and whatever you had from DB files had the other 2 GB.

Now come forward in time to the introduction of 64-bit Office. For reasons known only to the MS board of directors, the internal structure of Access was NOT fully upgraded in the same way that Word and Excel were, because Access still is limited to that "large memory model" architecture. It did not get expanded to the "very large" model. It still contains the high/low division to 2 GB each. Even though there have been a FEW improvements including the ability to call routines that use 64-bit addressing (see also PtrSafe discussions), the core of an Access DB file is still firmly rooted in 32-bit memory models and thus is still constrained regarding total size.

Since that "high" segment also encompasses ALL of the .MDB / .ACCDB files and does not overlap into "low" memory, that means you still have no more than 31 bits (2 GB) of address space for a single DB file... but you ALSO have only 2 GB worth of address space for the running application no matter which files it happens to be mapping at the moment. Yes, it CAN address a lot more than 2 GB - but it only can do 2 GB at a time, and no table can cross one of those implied segment boundaries.

@amorosik - I was not attempting to demean you with the joke about the horse, I was attempting to inject levity into what had become a highly contentious thread. But if you note the responses you were starting to get, you will realize that our frustration begins to emerge as we continue to offer our best answers and you continue to reject them.

If your question continues to evoke this kind of response, then from what I am seeing, our responding members can only see two possibilities. First is that you have some agenda to intentionally provoke us. Second is that you have not been able to correctly frame your real question and thus have left us frustrated in trying to understand what you are really asking. That is, we have a "logical communications disconnect" somewhere.

Thanks for sharing your valuable experience and knowledge
Looking for information on the topic of memory management, I see that several experts (Karl, Mike, Daniel,...) seem to assert that Access 64bit is not affected by the problem of 2-4 Gbyte of memory to contain applications and data

Is there official Microsoft documentation that deals with these issues?
 
Seriously, I don't see how you can need over 1000 forms.

They might not be 1000
But I would like to understand how to do if they were X+1 forms
Where X is the maximum number of forms that a single Access file can contain
 
Imagine a company that wants a single application to do everything - stock management, production control, invoicing, sales, purchase and nominal ledgers HR, payroll, financial management, forecasting, legal, sales and marketing, maintenance, corporate structure, R&D etc and lets add in they also want manage their web site and email as well. One system. Is that what you are imagining?
Knowing the features that the project will have is of no importance in finding a technical solution that allows the user to use a system with a number of objects greater than those allowed by the development environment.


So you build separate apps with designed and limited links to relevant data in other databases as required (sql server should be set up with multiple databases based on function). If you really want the maintenance person to also manage HR you would either provide a button to open the HR app, or add the HR app as a library.
But what does the maintenance person who touches the accounting have to do with it now?


All this can be controlled from one 'master' app which basically only contains a menu for users to select the functionality they require - what the user sees as menu options being controlled by their login profile.
Yes, a master app that starts other subordinate apps could be a solution to the problem
It remains to be seen whether the memory usage problem described by @The_Doc_Man could be a real obstacle to this type of operation
 
I came to Access after 40 years developing mainframe applications for large companies all over the country and even in the Middle East. No project is ever indefinite. They have fixed objectives at the beginning. Sometimes during design or development we discover a flaw or omission in the initial plan. Then we rework what we have completed and start on the new stuff. Occasionally, projects get cancelled because they were so poorly conceived that they failed to be implemented in a timely fashion.

I have developed a number of mission critical systems using Access. My clients use Access to run their entire business with the exception of their accounting and payroll which are usually purchased in the case of a general ledger or outsourced in the case of payroll. But, my apps do what the company needs in order to make/sell their product.

I would never create a database that includes all the functionality for every department in a single FE. The database may be shared, but the FE's are different for each application. The users don't find this odd or inconvenient. They would have the same situation if they were working with mainframe applications.

You're going to have to tell us what this mystical ever growing application is because it simply isn't something any client would pay me to develop because it has no objective and no end point for my employment.

Remembering all the work you've done isn't much help in solving this specific problem
And even needing to understand what a software procedure actually does, from the developer's point of view, is completely useless
Or if you like to think of a specific system, then think of a system that can be used to create mailing campaigns, that allows you to create estimates, manage orders to suppliers, sell with documents of different types, that can be connected to POS and electronic cash registers, that integrates an accounting system, that allows you to power an e-commerce, .....
But, as I wrote above, dwelling on the details of the system does not provide any help with regards to a possible solution to the problem posed
 
You needed to say that at the beginning. That is a different situation than your initial question.

Usually projects like this were poorly designed to begin with and what you need to do is to get a tool like Total Access Analyzer from FMSInc.com or go to @isladogs site and look at his tool which is similar but won't have the same exact features. You might even want to purchase both. Crystal has a similar tool which I think is free.

Then you need to look for objects that duplicate other objects. You will probably find clusters of queries that have hard-coded criteria which could be reduced to a single query with arguments. You will find multiple forms that update the same data. You will find reports that are identical except for their sort sequence which could be supplied as an argument.

You may find that the database is used by several different departments to do different things. You can leave the BE as a single database if some of the tables are shared but you can split off multiple FE's that are single purpose.

This is the initial post

"...The question is: working on a project that is expected to grow continuously at the rate of a few dozen objects/month, how do you set things up from the beginning to allow this growth without preventing the correct overall functioning?..."

Nothing has changed at all
Then, if you associate the word 'project' with the word 'single file' then it means that you misunderstood
 
You provided links for articles discussing "Large Address Aware" - the option to allow programs to re-allocate their memory maps. I followed all three links. The solutions shown in those articles move the barrier from 2 GB to either 3 GB or 4 GB depending on the specific structure of the app. They AT MOST double the size of that address space, so might provide for a little more room. But that is a one-time expansion. Once you implement the LAA option, there is nowhere else to go. The internal addresses for data tables apparently did not change when the LAA options were implemented.

You don't seem to understand that your question asks us how to push a finite memory to essentially infinite limits. Don't you see the inherent contradictions in that question? What do you do when you reach the edge of a cliff and take one more step? You FALL DOWN.

As long as you continue to ask this question in the abstract, you are going to be told in the abstract, "You can only go so far and no farther." If you had some specifics - which in your cases it seems you don't - then we could work on a framework of those specifics to help you optimize the layout and maximize your storage efficiency. Dealing in abstraction - as your question appears to be doing - is ALWAYS going to lead to generalized (and probably uniformly negative) answers.

seem to assert that Access 64bit is not affected by the problem of 2-4 Gbyte of memory to contain applications and data

No, when I read the articles, I did not see anything like that. If you think they said that, then I respectfully suggest you saw what you WANTED to see rather than what was really there. The barriers I discussed were moved down the road a little - but the are still there.

Is there official Microsoft documentation that deals with these issues?

Yes - it is the Microsoft Access Specifications document. It tells you how far you can go with something Access-related. I've been referencing it for quite a while. Did you think I was pulling those limits out of thin air?
 
...The question is: working on a project that is expected to grow continuously at the rate of a few dozen objects/month, how do you set things up from the beginning to allow this growth without preventing the correct overall functioning?...

You don't. The "without preventing correct functioning" part hides a tricky "gotcha" called "change orders." What you are asking is, in essence, a two-pass (or higher) algorithm. To prevent roadblocks you must be able to see the future. You are asking me to violate time symmetry. So... no, you can't do this. Reality ALWAYS intrudes on projects. (See also the third law of thermodynamics, having to do with open vs. closed systems.)
 
This is the initial post

"...The question is: working on a project that is expected to grow continuously at the rate of a few dozen objects/month, how do you set things up from the beginning to allow this growth without preventing the correct overall functioning?..."

Nothing has changed at all
Then, if you associate the word 'project' with the word 'single file' then it means that you misunderstood

And the real question is .. why would you have a project that is never finished? Why would it need to grow continuously? Why can't you design a form or a query that works correctly in both 2024, and also runs in 2025 without needing to add a new form for 2025. I assume that's the sort of problem you are dealing with.

You can, it's just understanding how to build the database with that functionality. Maybe you need a table with 12 monthly slots for the last 12 months, fill those slots with the data you need, and then you have a mechanism to generate a 12 monthly report without adding new code each month, and without you having to spend time every month redesigning the database.
 
You don't. The "without preventing correct functioning" part hides a tricky "gotcha" called "change orders." What you are asking is, in essence, a two-pass (or higher) algorithm. To prevent roadblocks you must be able to see the future. You are asking me to violate time symmetry. So... no, you can't do this. Reality ALWAYS intrudes on projects. (See also the third law of thermodynamics, having to do with open vs. closed systems.)
And the real question is .. why would you have a project that is never finished? Why would it need to grow continuously? Why can't you design a form or a query that works correctly in both 2024, and also runs in 2025 without needing to add a new form for 2025. I assume that's the sort of problem you are dealing with.

You can, it's just understanding how to build the database with that functionality. Maybe you need a table with 12 monthly slots for the last 12 months, fill those slots with the data you need, and then you have a mechanism to generate a 12 monthly report without adding new code each month, and without you having to spend time every month redesigning the database

Yes, if we were in a group that discusses philosophy then we could write about why
But we are in a technical group, and so I think it is enough to explain the how/what
 
You provided links for articles discussing "Large Address Aware" - the option to allow programs to re-allocate their memory maps. I followed all three links. The solutions shown in those articles move the barrier from 2 GB to either 3 GB or 4 GB depending on the specific structure of the app. They AT MOST double the size of that address space, so might provide for a little more room. But that is a one-time expansion. Once you implement the LAA option, there is nowhere else to go. The internal addresses for data tables apparently did not change when the LAA options were implemented.

You don't seem to understand that your question asks us how to push a finite memory to essentially infinite limits. Don't you see the inherent contradictions in that question? What do you do when you reach the edge of a cliff and take one more step? You FALL DOWN.

As long as you continue to ask this question in the abstract, you are going to be told in the abstract, "You can only go so far and no farther." If you had some specifics - which in your cases it seems you don't - then we could work on a framework of those specifics to help you optimize the layout and maximize your storage efficiency. Dealing in abstraction - as your question appears to be doing - is ALWAYS going to lead to generalized (and probably uniformly negative) answers.



No, when I read the articles, I did not see anything like that. If you think they said that, then I respectfully suggest you saw what you WANTED to see rather than what was really there. The barriers I discussed were moved down the road a little - but the are still there.



Yes - it is the Microsoft Access Specifications document. It tells you how far you can go with something Access-related. I've been referencing it for quite a while. Did you think I was pulling those limits out of thin air?

I have provided those links for the sole purpose of making it clear that other experts on these topics expressly indicate that the 64bit version of Access/Office does not suffer from the memory shortage problem, but only the 32bit version does
And this contrasts with the answer you gave me in post66
 
You don't. The "without preventing correct functioning" part hides a tricky "gotcha" called "change orders." What you are asking is, in essence, a two-pass (or higher) algorithm. To prevent roadblocks you must be able to see the future. You are asking me to violate time symmetry. So... no, you can't do this. Reality ALWAYS intrudes on projects. (See also the third law of thermodynamics, having to do with open vs. closed systems.)
No, seeing the future would be nice (but not that much) but it's not possible
It is enough for me to understand how to organize things to obtain a project that can manage X+1 objects, where X is the maximum number of objects that a single Access file can manage
I think it is the word 'project' that confuses things, because by 'project' I mean any set of Access files (or other files type) that can collaborate with each other, while I see that many answers insist on indicating the limits of the single Access file
 
It is enough for me to understand how to organize things to obtain a project that can manage X+1 objects, where X is the maximum number of objects that a single Access file can manage
What is the progress of your understanding so far? Access has tools to share code across frontends, it also has tools to import/export frontend objects if necessary. That alone gives you endless capacity.
 
What is the progress of your understanding so far? Access has tools to share code across frontends, it also has tools to import/export frontend objects if necessary. That alone gives you endless capacity.

So far it seems to me that, assuming you want to create a large-form-report-code-project system, the main problems are two:
- the limits on the number of objects that can be managed within a single Access file
- the limits of memory that a single Access file can use

In particular on the second point, it is not yet clear to me whether using 64-bit versions of Access these limits of usable memory can be exceeded, and above all whether these limits should be applied overall to all the procedures (one memory sector per all Access file) active at a certain time or should be applied for each procedure (one memory sector for each Access file) in a distinct way

Yes, the use of export/import procedures for single objects on text file is already foreseen (Tim Abell's Vcs)
But I do not think this thing has any importance in relation to the 3d object
 
The problem is I have two objects, we'll call one a mouse and the other an elephant. You seem to be assuming that any object consumes the same amount of memory, the same amount of resources. So an 'object count' of 2 will be the same whether you have two mice or two elephants or one of each. Whereas the resource required for a mouse object is completely different to an elephant object.

So aside from the limit on number of coded objects in a single access file which is well documented - how do you expect to determine when you are approaching the memory limit - which as already stated, is more a problem for the machine/windows - works fine on your machine with 32Gb+ of memory, but really slow on a users 8Gb machine. Common advice when designing forms is to design to the smallest monitor. Perhaps you should apply the same principle to memory - take out 24Gb from your machine and develop from that.

You want to know some memory stats whilst your code is running - see these links
and
 
OK, one last try.

Your problem HAS changed a bit from as initially asked / implied, to include the possibility that you COULD have multiple dedicated-purpose app files. (That was NOT evident in the original question.) I will take a stab at this aspect of your project question.

You will have multiple moving parts. As I said before, a detailed planning stage is MANDATORY for this to have any chance. Find how many moving parts / distinct apps you anticipate on having. You MUST do this because you are preparing to do a divide-and-conquer analysis. You will need to know into how many parts this problem divides so you can provide for each dedicated part.

Now, let's say you did that. You have an educated idea of how many distinct apps you will need. The divisions might be along departmental lines. Or your division might be regional with different legalities and requirements for different regions. The division might be topic-related. Doesn't matter HOW or WHY it slices up into parts. The important part is that it does. The next step, now that you have a count on apps, is to decide where the apps overlap in any way, thus suggesting that they will need to share data in some way. This is where the serious planning comes in.

From a previous discussion, I made it clear that multiple Windows tasks CANNOT share RAM-type memory. While that is not 100% true, for Access it might as well be cast in concrete because we have no visibility in MSACCESS.EXE and cannot change how that works. But these hypothetical distinct apps CAN share data files, both conventional and back-end.

Therefore, the next step is to design the files that will be shared. If you can have a common back-end that will NOT be mapped by every task, but WILL be mapped by more than one task, design and LOCK DOWN THE DESIGN of what goes in that one back-end that will be shared. Also consider that building a text-oriented transaction file might be a preferable option in some cases as a way to minimize your use of the limited space of the .MDB / .ACCDB file. For EVERY COMBINATION of apps that must share data between two isolated apps, BE PREPARED to share them in files that might not be inside of Access. For example, a transaction file that is essentially a .CSV text file. And be prepared to rename or erase or otherwise mark that file as "USED" in some way so that you don't try to import it twice. How you do that specifically has to be up to you.

IF you use a divide-and-conquer method, two things happen. First, though the problem might expand, you CAN isolate the parts that are affected by this hypothetical expansion. Second, while this won't prevent some disruption, it allows continuing use of parts not affected by catastrophic changes. AND it won't nearly as often require MASSIVE changes - because you have already divided the problem into pieces-parts. This is the key, though. You CAN'T do the above without enough planning to identify the overlaps and non-overlaps, which means you have to identify the distinct parts that will get their own dedicated sub-apps. So my original discussion on extensive planning remains in place and I stand behind it.

One last thought: IF you were going to ask the question about a project that cannot be divided into applicability segments, go away because that question if asked regarding a monolithic project is unanswerable even in the abstract.
 

Users who are viewing this thread

Back
Top Bottom