What is the definition of an implementation detail? [closed] - terminology

Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 10 years ago.
Improve this question
I see this term on the internet a lot (in fact, typing it on google returns a lot of results).
What is the exact definition of an "implementation detail"?

It's a behavior produced by code which may be relied on by consuming code, though that behavior is not specified by the spec the code is written to. Hence, other implementations of the same spec may not exhibit the same behavior, and will break that consuming code. That's why it's bad to rely on them.
For instance, if you were to write some code against a list interface which specified an array sort but not the algorithm it used, and you needed the sort method to be stable, and a version of your code was used with a non-stable sort algorithm, then your code would break.

I'm not aware of the exact formal definition of the term "implementation detail", it generally refers to the concrete implementation of a certain specification.
Take a List for example.
A specification of a List may say that "it is able to hold multiple values with duplicates while preserving order."
From the above, it doesn't mention what kind of backing data structure is used for the List -- for all we know, it may be an array, or a linked list. That is really an implementation detail that is really left up to the implementor of the List.

An "implementation detail" is a decision that is left to be made by the developers, and is not specified at an earlier level (such as a requirement document or, depending on context, an architectural document.)

Related

Is cloud functions a valid replacement/implementation of a distributed system? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 2 years ago.
Improve this question
I want to process a list of data parallelly; processing of each element of the data won't affect other.
With for example google pub/sub + cloud functions, I could achieve something scalable and parallel, which looks like a distributed system.
I have little knowledge about distributed programming, and it seems that it takes a lot of time to master.
So I would like to know is this a replacement or a valid implementation of distributed system?
For the specific use case you're talking about - dividing work among function invocations to run in parallel - yes, it sounds like that would be adequate.
I would be very hesitant to call it a full "distributed system" (at least not without your very strict definition of what that really is). If you take wikipedeia's explanation of distributed computing, you might have a very basic system in place, but lack of a peer-to-peer direct messaging system probably makes it unsuitable for many of the listed applications you see on that page.
The bottom line I think you should really consider is if it satisfies the requirements of the problem at hand. Whether or not it's a "distributed system" is mostly irrelevant - either it works or it doesn't for that use case.

What is meant by the term "inplace" [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 8 years ago.
Improve this question
I have a vague sense of the meaning of this term, usually in the context of data structures and algorithms which happen to rely upon swap variables to shuttle data around containers and what not. But I'd like to hear some richer definitions and nuances to people's knowledge of this term. Taking a shot at it myself I'd say doing something in place (interesting subquestion, what verbs can come before inplace? moving inplace? transferring inplace? copying inplace?) is to transfer elements of container data from one memory location to another without recourse to a second copy of the whole container.
"inplace" usually means "with O(1) additional space".
This term is often used to indicate an alternative to some operation that would normally involve some kind of a copying operation. The alternative achieves the same results, but avoids the copying procedure or operation, whatever the case may be.
One example comes from C++. Before the C++11 revision to the language, adding an element to a container could not avoid a copy operation of some kind, which could get expensive when the container has a non-trivial object.
If a completely new class instance is to be added to the container, it was pretty much a foregone conclusion that what ends up happening is: 1) class instance construction, 2) a copy construction, and 3) destruction of the first instance.
C++11 added certain language features that make it possible to avoid copying, with the new class instance ending up getting construct "in place", or "emplace" inside the container.

Functionality and operation [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 4 years ago.
Improve this question
I'm trying to do some analysis and when writing down a list of functionalities I realized I'm a bit fuzzy on the notion.
What can you consider as functionalities like, say, on this Stackoverflow page? Also, to distinguish between the two, how would you define an operation?
My understanding is that the former is something vague, synonymous with a feature or use-case, defining a distinct need/requirement without going into details. Whereas, the latter is something basic, perhaps a subset of the former, but I wouldn't say it's atomic since an operation could be composed of other operations.
Edit: Here's a link on the subject: http://forum.wordreference.com/showthread.php?t=17873
P.S: Functionality might not be the correct expression in English. If so, please confirm this. "Fonctionalité" is often used with respect to software in the French language.
I'm looking forward to other answers, though I suspect this is more of a language issue than that there are universally defined meanings to these two terms, functionality and operation. Therefore, the following is to be taken as just my personal opinion.
To me, functionality (in the sense that you seem to be talking of, as opposed to the meaning of the word in the linked-to forum discussion) refers to use cases, that is, to something that your product/system offers for achieving some goal. It's not a specific action you can perform, but rather an abstract statement of what a system allows you to do. Related terms are feature, or facility. (Btw. I think for this meaning of the word "functionality", feature would be more appropriate.) For example, you could say:
"This site offers search functionality / has a search feature for finding previously published articles."
An operation (or action?) on the other hand is far more specific. It's not something your system/product offers, but something that is actually done with it. You would probably be talking about operations when you can say exactly how it is to be performed, e.g.:
"A search operation is performed by first entering keywords in this-and-that input field, followed by a click on the 'Go' button."
If you take these two together, you could probably say that "functionality" is an abstract category for a number of concrete "operations" that go towards achieving the same general goal.
But I admit I cannot define the two terms more precisely, either; esp. with regards to choosing the right "granularity" for defining specific functionalties or features.

Need a synonym for "don't care", as in Decision Tables or K-Maps (not for apathy) [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 8 years ago.
Improve this question
I have more than one (non-technical) client who has been put off by the term "don't care" in a Decision Table context, even after I explain this is a technical term, and what it means. It just strikes them as a bit rude. When I search for synonyms I get results that have more to do with "apathy" than with this use of the term. (That is why I am not asking on English Language & Usage. This is also the source of the clients' reaction, I believe; it sounds too much like apathy, which is not what they expect from me as a consultant.)
Rather than fighting a silly battle I want to focus on the project. So I'd like to come up with a term that is clear to both technical & non-technical people, and is also inoffensive. Any suggestions?
So your users are going to see values and may want to select one that conveys that they don't care which value is ultimately selected?
I would suggest "No Preference".
EDIT: I might also suggest that you translate your request into layman's terms and try out the English stack exchange as suggested in the comments. Those folks might be better equipped to provide you with a plethora of answers assuming they understand your question.
Would any of these work for you?
Extraneous
Unconnected
Unrelated
Not relevant
Immaterial
Inconsequential
I have always used NA for not applicable. It seems to already be in the non-technical vocabulary.
Neutral -
Indifferent -
No Opinion -
Unaffected -
Unconcerned -
Does Not Matter

What is your "generic" web application testing plan? [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 9 years ago.
Improve this question
Like, testing for :
invalid inputs (strings containing "'"s)
giving random id's in url parameters to access "unauthorized" pages
prevent sql injection
...
I would recommend reading this brilliant book to learn more about the test plans.
In particular a test plan is much more than a list of techniques like you mentioned (these should most likely go into the details for the security testing)
It should at least contain:
The answers to the main questions:
why bother (what is gained by testing)
who cares (who are we working for)
how much (..testing will be done)
You would not go wrong providing also:
Platforms
Methods (positive testing, load testing etc)
Functionality you're planning to test
Acceptance criteria
And there is plenty more things to talk about in the plan.
Test responses for:
For integers - strings, null, values more than those allowed, negative, zero..
For strings - strings of lengths longer than that allowed
For invalid values, you can check if the response being returned is informative enough.
Test to see that your application logs these errors. If it doesn't you won't be able to identify and debug problems easily when they occur in production.
Also fuzz testing is a must for web applications.
If you want to make a list, you can add "Trying simple javascripts within a textarea field to see if the site saves and executes them"
this is what i use
Quality Test Plan
its very simple, straight-forward. covers many common web flaws (e.g. broken links, etc)
you might think its too basic, but im always surprised how many bugs it reveals
--LM