Kai - Soft work first personal blog jobs

project content
This work belongs courses Spring 2020 Computer Software Engineering Institute (Roger Ren Jian)
Where this requirement in the job Personal blog jobs
My aim in this course is System software engineering, access to personal development in practice
The job which specific aspects help me achieve goals Learning new knowledge through reading books, and ask questions, reflect

Quick Look textbooks complete lists you still do not understand the 5-10 questions, posted on your personal blog.

Question 1

How can define your own function module responsible as specific as possible, change the internal module does not affect other modules, but also the quality of the module can get a stable, quantifiable guarantee? Unit testing is a very effective solution.

- 2.1 Unit Testing

When it comes to unit testing, you have to let me think of course automatic evaluation machine used by the group. When it comes to automatic evaluation machine, so I have to think of the tragic semester of sophomore year when OO. It can be said, I will write the automatic evaluation machine who is about equal access to over ninety scores. Automatic evaluation machine write so many people, there are a few write unit tests do?

To me, unit tests need to cover through its own branch structure data of various statements, time-consuming, but the automatic evaluation machine only need a simple shell statements can be achieved and can be a long time in large batches bug test coverage, not limited variety of conditional branching problem. So does that indicate that unit testing is actually not necessary, but should instead use an automatic assessment evaluation machine violence? Or supplemented with unit testing, evaluation cover a large area-based violence?

Question 2

In the pair programming mode, a pair of side by side programmer, equally, complementarily development. They sat side by side in front of a computer, with a display face, use the same keyboard, working with a mouse.

In pair programming, as there are at any time to review and exchange of quality in all aspects of the program depends on one pair of programmers in all aspects of high level that one.

--4.5.2 Why Pair Programming

Pair programming, more or less in the classroom have had this opportunity, and have to say, for me, almost every experience than the poor.

In the process of writing code in reality, we might think, and if I can have a personal side with co-wrote, co-discovered the bug, so I will certainly write code that's very good of. This is the first stage point of view, then mentioned.

But in fact, often because of substandard two thinking people can not be continued, or because someone is too big brother, the other can only play call, or if two people are dishes, finally both hanging branches. This also confirms the words of the second paragraph in point of view.

So, now that we have a "little yellow duck debug" law, why do we need companions to point out the problems of our code? Say perhaps a bit too opinionated, but the pair programming really necessary? Large engineering team needs to perform small procedures can be completed by himself, pair programming seems somewhat redundant. What's more in accordance with the second paragraph the words said, the pros and cons of the program depends on the programmer in a high level in all aspects of that one. Well, according to the combination, we will have the following situations:

Gangster with big brother, big brother chicken dishes, chicken dishes chicken dishes.

The first combination perhaps more suitable pair programming, but whether because two people are chiefs and opinion often substandard, or finally hand over the same two features, style is completely different code, it would mean "I bear myself," the ?

The second combination, chiefs often because of their ability is too strong, inadvertently led to a chicken dish the water, he is a "knot I myself" it?

The third combination, they may have defects because some aspects made for chicken dishes, chicken dishes then the two together, if it is very responsible, then you can also pair well done job, but if two people are more want to mix it not from the "ddl soldier" into a "ddl fighter group"?

So in my opinion, knot does not seem necessary for programming?

Question 3

Many times users do not know their exact needs, or do not want to express the full requirements, software team needs to put yourself, for the sake of users, to guide the demand.

--8.1 Software Requirements

Recently, I did encounter this problem.

In the process of writing code to help others, the other party can not clearly express their needs, or even directly asked me to suggest some possible demand, and after I finished writing the initial code, but also several new demands, in my in accordance with the requirements change after they repeatedly fall back to previous versions of the needs of even the previous one.

On a real market, whether the party would equally capricious, or even directly to the programmer to think about it? So for this type of user, how should we deal with it in the end? As for the code, I see in the book, not to prematurely focus on common problems, so in this constantly changing needs, we as code writers and defenders, how to organize your code?

Question 4

We want the team to do things people are not careful to slow down, which could reduce their harm.

--11.5.2 daily build

It reminds me of the feelings of Feng Ru Cup sophomore.

The reason I am more or rejection is that the team here, it seems that every time the team of the consequences of his own a person to complete all the requirements, Feng Ru Cup also, mathematical modeling too. I sometimes reflect on their own, why "task team" Finally I have become a "personal mission" of it? Because I have a strong ability to do? I do not think so.

Because "care."

Exchange Online, we never know their teammates in the end is not read or do not look back not to return, perhaps this is the "Schrodinger's teammate" it.

So I want to ask, if the group has been to refrain from acting, or a little more derogatory to say that pigs as teammates, and in the case there is no way to change temporarily, it should be how to reduce their losses on the team is causing it? Then how to reduce the case, "a man with flying team" of it?

Question 5

If I simply merged version, and check in, it is likely to lead to TFS compiled failure. But if I order to ensure quality, after the merger, local compile and run a variety of tests, which is equivalent to repeat steps 2 and 3. When I checked in to submit again (repeat step 4), there is likely to encounter a new version of the conflict. In this way the cycle, resulting in endless ......

--11.5.4 temper justice are wrong

Not only is after graduation, we need to face the team to maintain the code in question, but on this software engineering course, we also need to face the common problem of maintaining the code.

Remember before the students together and maintain a large-scale code, git makes your head could not bear to use.

But also often heard in the work of programmers maintain code, you need to race against time, if you first change over, submit to the warehouse, then other people have to re-submit modified to ensure that the corresponding version, repeated several times the total modify slower people have to wait after all my colleagues have changed over again to be modified. My own code on different servers are often useful because different modifications, the last occurrence of the problem can not be compatible to the time of the merger, it is necessary to reconstruct want to change, so too much trouble. So for this version inconsistencies, is there a better solution?

Question 6

Software College students jelly in Yishan internship, he asked A super: Why need the source code management? I write code more cool, to others, to use QQ pass in the past as well. Why look at old code? My latest code is the highest quality, highest quality code enough?

--11.6 actual source code management

We more or less will encounter this problem.

In the completion of the initial code framework we think is very good, the packaging of various functions also as far as possible the low coupling. But under the new demand shock for a long time, we will inevitably become increasingly bloated rewrite the code, so to a certain critical point after the original beautiful code has changed dramatically. For simpler, perhaps thousands of lines of code can be solved by reconstruction, but to the project, often tens of thousands, hundreds of thousands of the amount of code, refactoring is obviously unrealistic.

However, according to the first part of the book I said, we should not give much thought to the problem caused by over-analysis, but without a comprehensive analysis of the needs, then will lead to more serious problems? For incremental task, pay attention to maintaining the code of points and where is it? After a certain threshold to whether the code will be reconstructed to ensure its aesthetics?

And this brings me think, if we give up for the appearance of the code, and then just increment increment (I also believe that many companies handle such tasks is such a way, the code just like a Frankenstein), the new recruits, code readability is poor, if it is not conducive to absorb fresh blood? And the book also mentioned a story that new employees feel the company's code is too ugly, they intend to reconstruct, his colleagues said, this is the code on a new employee refactored version. For problems such code bloat, poor readability, in addition to whether or not we reconstruct no other way? Whether in a more elegant way to maintain its functionality and readability of it?

Question 7

In recent years, our entire society seems to be very interested in innovation, full of creative talent, innovative schools, innovative companies, innovative city, innovative social and other terms on the media.

--16.1 innovation myth

For ordinary people, after accepting a relatively rigid educational books, it seems to have lost its innovative force.

The word innovation, whether only unique thing darlings of?

Speaking for myself, and students the process of cooperation, I occasionally put forward their own views, are hitting on the product, but both were rejected. So That being said, does it mean that my lack of creativity it? Perhaps the way I think about the problem with bias, leading me to think out of the angles are not feasible, then we want to have an effective innovation, how to cultivate it? Should to think from what aspect?

Will the "software" and "software engineering" is how these words appear - when, where, who?

software

August 1953, Richard R.Carhart wrote the software for the first time this term in the study of Rand's memo

In 1958, John Wilder Tukey published a paper entitled "The Teaching of Concrete Mathematics", which is the term software was first published in the paper record

Software Engineering

In the 1950s, Douglas T. Ross at MIT's lecture is already referred to this term, after a Margaret Hamilton, officially named this term.

In the 1960s, due to human face "software crisis", the term software engineering 1968-1969 proposed the conference organized by the NATO.

[Extra Credit]: We all know the origin of software and software engineering, software engineering development process to ask what you think of interesting trivia and stories?

Lenna map

FIG Lenna is an illustration of the famous digital image processing, is often used as a test, since it contains the following features:

  1. The details of FIG moderate mixing, smooth areas, shading and texture to the test well to various image processing algorithms.

  2. Lenna is a beauty, for the image processing industry researchers (mostly men), a beautiful map can effectively attract them to do research.

But in fact, it was adopted as the test image is the true story:

June 1973, an assistant professor at the Institute of image processing signal at the University of Southern California and one of his graduate students intend for an academic conference to find a digital photo, and piles them on hand for the "boring" photo bored. In fact they need is a face photograph, while some bright spots. Then someone just walked into the laboratory, was on hand with a "Playboy" magazine, the story took place ...... and the results need to be limited to that time pictures of the lab equipment and testing, lenna picture only to pull the original image For the shoulder.

Internet survey about the current popular source version management software and project management software, what you are, what advantages and disadvantages?

user count

name user count
Assembla Unknown
Buddy Unknown
CloudForge Unknown
Gite Unknown
OW2 Consortium Unknown
Rosetta code Unknown
ALONE Unknown
GitHub 31,000,000
Bitbucket 5,000,000
Launchpad 3,965,288
SourceForge 3,700,000
GitLab 100,000
GNU Savannah 93,346
OSDN 54,826
Ourproject.org 6,353

Advantages and disadvantages

name advantage Shortcoming
Microsoft TFS Support for agile, msf, cmmi other projects, process management, process improvement. You can demand version of the task, project progress glance, for a small team, more useful than the Gantt chart. Can be applied up team, the number of very small companies, most of them genuine, that is, source code control this part, this is only a very small part accounted for TFS function.
GIT Suitable for distributed development, emphasis on the individual; public pressure on the server and the amount of data that will not be too great; fast, flexible; can easily resolve any conflict between two developers; working offline. Learning cycle is relatively long; nonconformist thinking; poor security codes, once the developer down the entire library clones can be completely open all the code and version information.
Mercurial Easy to learn, easy to use; good package Poor performance cross-platform; branch management is not flexible; slightly worse Support Community
GitHub Git repository GitHub provides services based on web, allows you to use Git source code management features, or its characteristics. Git repository GitHub provides services based on web, allows you to use Git source code management features, or its characteristics. It may not be the best tool to capture the creative process and the creative ideas of the record. For this special function can be selected LayerVault analog, or other similar tools. Previously, we have already emphasized Github is ideal for tracking the code, but it is not the best design tracking tool. The picture content into code or set of products designed for, it seems still not as smooth.
Bitbucket Easy to use; free; support for Chinese Slow; source code is closed
Trac Very flexible and can be arbitrary control and SVN integration Function is not very powerful.
Bugzilla Free; support Chinese version Quick search results are not accurate. Only manage defects.
Apple XCode Compile fast, each operation is very quick and easy. Automatically provides undo, redo and save functions without writing any code. After the updated version of a plug-in might fail.

Guess you like

Origin www.cnblogs.com/dxy1999/p/12405966.html