Wikipedia:Reference desk/Archives/Computing/2021 September 11

= September 11 =

Difference between software development and software engineering?
Can anyone explain a clearly-defined difference between the fields of software development and software engineering? I've read that software engineering focuses on using engineering principles in the development of software, encompassing everything from the idea of the software through to the deployment and maintenance of the software... but the same can be said for software development, no? Some have said that software development focuses on writing and testing code, and software engineering focuses on the entire process (as mentioned before), but then I've seen others who refute this, also claiming that the roles "software developer" and "software engineer" are interchangeable in the job market. I'm inclined to think that both these fields are practically the same. The Wikipedia articles on these fields are poorly written. Aitch &#38; Aitch Aitch (talk) 09:32, 11 September 2021 (UTC)
 * I found a blog entry discussing the distinction between dev and engineer. It seems the dev is more involved in the theoretical side, while the engineer may tangle with deployment and the associated problems that arise in practical reality. (Intriguingly, Russians say "engineer-programmer" instead of making the distinction, but the blogger doesn't seem to approve of that.)
 * Edit: the sources listed at the bottom of software engineering are informative. Edsger Dijkstra had some splendidly bitter things to say about the misappropriation of the term.  Card Zero  (talk) 10:02, 11 September 2021 (UTC)


 * I'd say that "software development" is a neutral designation for a process, while "software engineering" is a term purporting to refer to a discipline governed by a methodology based on sound principles. In practice, however, activities grandiosely labelled as "software engineering" may turn out to be as disorganized and sloppy as the worst found in software development. --Lambiam 11:26, 11 September 2021 (UTC)


 * Yes, it seems to me that "software engineering" is sort of a formalization of the process of software development. But it rarely works that way (the software engineering) in practice. Bubba73 You talkin' to me? 01:59, 12 September 2021 (UTC)

Linking 2 computers together.
What's the basis for linking 2 computers together: either that 1 change in 1 computer is also done to the other computer, or, a common folder is accessible from both computers? (A change in 1 folder is a real-time change in the other computer too, but anything outside that folder is separate). My guess is, this is common like the world wide web: finding a shared drive ip # and so 1st come 1st serve, and then registering it, to both computers? 67.165.185.178 (talk) 15:58, 11 September 2021 (UTC).
 * VPNs are very commonly used, often for business purposes. Please note, the phrase "what's the basis for ..." means "what's the starting point for (the theory) ..." and has nothing to do with "how often", even though "on a daily basis" has that meaning. (Your English may vary, not being prescriptive.)
 * Or did you mean "common" in the sense of "shared"? Card Zero  (talk) 17:59, 11 September 2021 (UTC)
 * I meant the theoretical-ness of it. For example, for websites, it's all 1st-come 1st-serve basis, on the domain name. Is it not like that for linking 2 computers? They have to use a shared server? Which is registered as a 1st come 1st serve basis? Like the port. 67.165.185.178 (talk) 06:50, 12 September 2021 (UTC).
 * Perhaps the question is to be interpreted as: "Which methods, protocols or implementations are used to realize shared read/write access to a data repository?" If this is indeed the question, it is difficult to answer because there are so many different ways, the suitability of which in a specific situation depends on many factors. The data repository may be physically present at one location (storage device of farm) or be replicated. Assuming the devices involved are connected through the Internet, the TCP/IP suite will be used to implement the application. Especially when not on the same LAN, authentication is an important concern. --Lambiam 07:46, 12 September 2021 (UTC)
 * Ok, I think the TCP/IP is what I'm thinking of. I used to work for a nationwide company that uses a Z:\ server, all files/folders are updated in real time. And there was an icon in the desktop to get into the Z:\ folder. How would I set something like that on my own computers? Isn't that a 1st-come 1st-serve basis for whatever the address is? Is VPN for computers more closer together, like in the same building? 67.165.185.178 (talk) 00:42, 13 September 2021 (UTC).
 * Do you have a practical need, or is your interest in understanding how a service or facility like this can be implemented? If the former, storage in "the cloud" will for many uses be a simple and acceptable solution. If the latter, the typical approach is to implement a virtual device driver that talks to a remote process in control of the actual device driver for the data storage. Any protocol that allows the speedy exchange of messages can (in theory) be used. A difficult issue is the avoidance of conflicts if multiple parties can have simultaneous access to the same store; there are various protocols for mutual exclusion, but if not done right one party might indefinitely hold access right to the exclusion of others (possibly the same real-world individual). VPN can solve problems of eavesdropping and man-in-the-middle attacks, but one way or another authentication remains, in general, still needed. --Lambiam 12:34, 13 September 2021 (UTC)
 * How do you in theory set up the TCP/IP, is there not an IP address to register, 1st-come 1st-serve? 67.165.185.178 (talk) 22:57, 14 September 2021 (UTC). For the virtual device driver, what's the selectivity? 67.165.185.178 (talk) 22:57, 14 September 2021 (UTC).