What is the difference between architecture, engineering, science, analysis, design, programming and coding?

Asked

Viewed 1,101 times

27

I know, you have the question What’s the difference between architecture and software engineering?.

Ali already answers in part. Although I was not 100% satisfied with the answers, which are actually good. If you can do better, you’ll help, otherwise leave what you already have there. Specifically architecture defines what?

But I think what separates each function of these disciplines from the title is unclear.

For example, what computer science does not deal with in software engineering? Or vice versa.

Programming and coding seem to be the same thing. But it really is?

The same can be said of analysis and design. To me they seem different things. Analysis may be a stranger in this (#Ficaadicapraresponder).

I see these things as a hierarchy or phases of the software development process as a whole, so I think they are all related directly, so I asked in one question.

So I want to understand the line that determines where one begins and the other, what each defines.

I don’t want details, just general lines. If details of each function are required I will ask specific questions.

Note that I want to know about the functions actually performed, not about positions. I know that the same person may have more than one function, and that the position she holds indicates nothing she can or cannot do.

I know Wikipedia, you can put links to complement, but a good answer goes beyond what is there. I do not even know if it is such a reliable source as this.

I don’t want opinions, you need some foundation, otherwise I’ll consider the answer wrong.

  • If no one gives a good answer I’ll answer later.

  • About architecture in the title, it was not very clear whether you were referring to software architecture or solution architecture... The text also did not make clear which aspect is being dealt with. Perhaps the ambiguity was purposeful? , for there to be a two-way response?

  • 1

    @Jeffersonquesado yes, the doubt is generalized even, it applies for both. It’s all very confusing to where everything goes, including what you mentioned, so you spoke of both. Ambiguity was purposeful.

  • I have filled in the main gaps that I have something to add (with the exception of Algorithm Analysis) in the answer https://answall.com/a/206988/64969

  • 1

    Just for the record, I put in the description of the reward that it will go to the answer accepted by the author of the question, but in case it does not occur will go to the answer with more votes at the end of the period.

3 answers

26


Computer Science

Computer Science is an area of mathematics, as is the name of a college course.

In the faculty of Computer Science (sometimes referred to as Computer Sciences), You study the basics of programming so that you can enter computer science itself. Concepts related to the creation of systems and software, such as requirements survey, project cycles, etc, are also studied.

Among the sub-areas of computer science (except engineering), I highlight the following:

  1. algorithms
  2. algorithm complexity
  3. automata theory
  4. formal languages
  5. data structure
  6. databases
  7. artificial intelligence

Those who practice computer science are called computer scientist.

Computer engineering

The area Computer engineering studies the life of software creation. It is a very broad area of study, ranging from analysis of existing systems, communication between people who will use the system, communication of people within the system assembly, communication between systems, project management techniques etc.

One of the areas of software engineering has a large overlap with the area of Project management of Administration, but it has very specific peculiarities. For example, the Agile manifesto emerged to meet specific demands of the software market, which then these concepts were leveraged for other design schemes.

Opinion: by what I (Jefferson Quesado) read about the origin of the term Software Engineer, this term was coined by a kind of gourmetization of the market, for marketing reasons to provide the customer a greater confidence, because when it is said that a engineer is working has the precept that it is someone extremely capable, formed by fire and suffering for five or six years of intense studies in college.

One of the aspects addressed by software engineering, which I use a lot at work, is to reduce costs and increase relative productivity of each employee (whatever the productivity measure: sloc, customer value delivery, management satisfaction, product saleability etc).

Who practices Software Engineering is called Software Engineer.

Architecture...

Architecture deals with the general, functional and behavioral design of a particular piece of software. After drawing and determining what should/should be achieved, it is up to the engineers to make this architecture viable.

... solution

I will put here the words __, written in the article paragraph The Role of the Solution Architect, for they are better than I would be able to write:

A solution architect works primarily in the construction of solutions based on the needs of the business, making use of the services and technological resources already existing in the company. Another objective is to align new solutions to architectural principles already defined, respecting the standards and integrations of the company.

Where I work, we had to devise a new architecture for the timing of the app the company sells. Before beginning to encode, it was discussed at length about what this new communication would look like. For this, a coalition of 3 people was made to figure out what the solution would be and, if possible, to test a prototype:

  • our database wizard and sql to determine what information should arrive on the device (200 tables with information that should arrive on the device)
  • the server and communication application/bank part specialist
  • i, as a transmission specialist and Parsing information and also legacy timing.

Our problem has been detected as impossible to circumvent about 20/October, the solution was designed on 25/October and the first prototype of the idea was ready on 28/October. On November 4th, we put the solution in the field (beta). Finally a stable and aesthetically beautiful version for the user was ready on December 19th/19th.

In the above example, the work of solution architecture took place from the days 20 to 25 October, then it passed by the architecture of software and, moreover, it was written and construction of software (therefore, sotware engineering work).

Who practices Solution Architecture is called solution architect.

... software

Software architecture is concerned with the higher levels of software abstraction. She cares about the software elements, their components and their relationships.

In the example of synchronization, which we had in the company, the solution architecture defined that the data would be navigated from the point of origin (identification of the user of the mobile device), going through the relationships until arriving in a certain table; if there was something new (new lines, relationship created that gave access to unreached lines, updated relationship that gave access to new lines in the table), this information would be sent. Sending would take the form of a mapping where each table was a field in JSON and its value a vector of JSON objects with column mapping -- value (null values in column were omitted) [in note: yes, we know that there are more efficient ways of transmitting data and we are working on an evolution of this synchronism]. This new timing system should be applied immediately in the tables with greater weight in the system, and the others should still be kept in the legacy system. So we were able to logically separate the components and work on them independently. Our software architecture went something like this:

  • functions in MSSQL for navigating
  • function on the bank transforming a SELECT in a JSON object
  • server using Spring Boot that captures the JSON provided by the database and fits it for serialization (placing the other JSON components provided by the solution, such as the table name followed by two-points, the commas to separate the JSON lines/objects within the same vector)
  • HTTP receiving in Totalcross (gave rise to this class: Httpconn)
  • JSON’s SAX compilation in Totalcross (the reference DOM model org.json cost a lot of memory for our case)
  • insertion in Sqlite

Who practices Software Architecture is called software architect.

Analyzing...

... and development of systems

... algorithm

Design

There is the Algorithm Design, Solution, Interface, each with its peculiarities...

Algorithm Design I only heard integrated with Solution Architecture, usually as a point to be improved. For example, an algorithm may have a rescue design on N + 1 of information in the bank, so it is suggested to change the design of this algorithm to make this rescue on a trip to the bank.

Solution Design has a wide intersection with Solution Architecture, so large that I particularly don’t know how to differentiate (if there is any distinction).

Interface Design is closely related to UX (User Experience/user experience) that you want to pass to the system user. A webdesigner works Javascript and CSS to provide a pleasant user experience.

Who works with Interface Design is called Interface Designer.

Coding

Etymology:gather standards in code form.

Coding is basically turning into code.

In the book Shell Script Profissional of Aurelio Verde, he talks about the differentiation between scripteurs and programmers; about this differentiation, paraphrasing the site:

Chapter 1 - Programs yes, scripts no This book teaches how to make programs, not scripts. Its goal is to transform "scripters" into programmers, giving the necessary foundation and teaching the good practices of programming. This will improve the quality of the code, greatly facilitating future maintenance work. No more rewriting scripts because the original code was incomprehensible, no more headaches from lack of cleanliness and organization. Learn to make programs in shell, the right way.

The difference between a scripter and a programmer is related to the quality of the code produced, reusability and maintenance cost. In the specific case of shell script, coding is... shall we say... scriptar.

So, according to Aurelio Verde, coding is not the same thing as programming.

Those who practice Codification are known informally as codadores (at least at the level of programming marathon, we referred to ourselves thus =]).

Programming

It is the part of creating programs. A program is differentiated from a tangle of codes because it is cheaper to maintain and expand.

Coding is a necessary part of programming, but it is not only done through code creation/transcription. Programming requires greater discipline and thinking about the next one that will pick up on the system you are leaving behind... From personal experience, I can say that many times the next one is yours me from the future, so try to leave a good job for him.

Who practices Programming is called programmer.

Who practices Programming and is gourmetized is called software engineer.

  • 1

    The idea is to get more information and continue the answer, since it is a question with a very broad answer and I can’t in my free time at work to answer everything at the same time

  • 1

    Find someone who can fill in the gaps in this answer! And who can improve existing items

12

Architecture

In the civilian field, it’s design and build the human-inhabited environment, seeking expectations such as comfort, use of space, use of light, air circulation, etc.

In the software field, definition of software components, their external properties, and their relationships with other software. Seeking separation of responsibility, testability, maintainability, cyclomatic complexity, scalability, among other practices.

Engineering

Achievements of scientific calculations, where apply mathematical and technical knowledge in computing. Commonly used in aircraft-embedded software, seismic analysis devices, neural networks and artificial intelligence, graphics renderings, games, and more.

Science

By itself it just means Knowledge, Study. Used in academic circles as a starter the science that studies computational techniques, methodologies and instruments. Thus, one studies the history of computing, one has the first contacts and one studies theories and conceptions of its parts.

Analyzing

Usually referring to Systems Analysis, not in the need to have relation to IT field, but rather with process studies to find the best rational way for information to be processed. By mapping the flow of a process of how some activity occurs, you have control of this process. Then there are opportunities for improvement, implementation and indicators for monitoring. When the flow of this process is satisfactory, then yes we can plan its computerization.

"The first Rule of any technology used in a business is that Automation Applied to an Efficient Operation will Magnify the efficiency. The Second is that Automation Applied to an inefficient Operation will Magnify the inefficiency." Gates, Bill - The Road Ahead

Design

If we have talked about User Interface, is we can use the same civil architect definition: It is the practice of making the human/user/client feel good inside/using his system. Visually, didactically, feeling iterations and system responsiveness about their actions. Takes care of the visual and practical well-being of the system towards its user.

Speaking of backend design, one can understand how the design of how its components - files, codes, projects - are visually organized, with an easy understanding of its folder structure and especially its nomenclatures.

Programming and Coding

We’re talking about software, so these two, in this context, are actually similar. Programming means to "create a program", and to encode in "create a code", code that, after finished, will generate a program - software.

0

"For example, what does computer science not address in software engineering? Or vice versa.":

Simple, computer science involves much more areas than software engineering. The software engineering is in general lines, it is the planning/ design/ architecture of the software, it is basically software development, the title of engineer/ architect/ analyst-developer, are just that, titles, because they do practically the same work. It’s the same thing that you ask what difference the engineer/analyst/scientist/Adm of data doesn’t have, because they do basically the same thing.

Computer science has many more areas than development: Cc involves database, artificial intelligence, networks, image processing, signals and systems, advanced algorithms, development methods, etc... (here already a little bit for engineering), and each of them is not necessarily connected to another, you can study and specialize, be a Phd in any of them, software development is one of the areas, that’s all.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.