One
The first year is the first Pocket PC-based wireless catering management system I developed.饕餮 is the monster in the ancient Chinese legend, like to eat, so "饕餮" is also described in the people who are overeating. Take this name here, I hope everyone has a good appetite, not indigestion.
In the first year, the version number is the version. Everyone sees 1.0, 2.0, 2000, and since the name is so China, the index is also China. In the first year of course, it is the first version, I hope this software is two years, three years birth.
So far, this software stays in my brain. Now I am writing a document. Perhaps it is influenced by XP, I try not to let the document too much, too bad, and what I want to write, I will not exceed 30 pages. Maintaining the 3-page document is not difficult. In addition, these development diarys are also part of the document.
Recently reads test-driven development and reconstruction books, but I don't intend to introduce I have not fully understood and master the technology in the project. If time is beyond, I hope to introduce unit tests when writing business logic code, but can help me for a technology I don't fully understand, I still have a skeptical attitude.
At present, my idea is to divide the entire software into three levels: database representation layer, business logic layer, and interface application layer. The database layer uses the web service to connect the background SQL Server database, and other two layers are implemented on the Pocket PC. I haven't used tools such as UML. Maybe when you design, I will use Visio, but I will not use other UML tools.
Yes, the purpose of writing this program is to participate in the Microsoft Development Competition in June, can you catch this dead-line, I have no bottom in my heart, after all, I can only write the program at night and weekends.
two
Yesterday I have completed the definition of the database, the business logic definition, and the partial interface definition work. Although I haven't written a code yet, my heart has been more than, at least I know what the program is written.
Write procedures and write novels have a lot of similarities. In front of the pen, first consider the story of the story, then push each detail, then shape the character image and their respective play time, and finally write the whole story on the paper. . And write the program, first need to analyze, then determine business logic, then enter the detailed design, to design each class and their respective survival cycles, this program is actually coming out.
Of course, we cannot ignore specific technical details on the impact of development. I also need to update my software architecture design, I haven't set it yet, where is the specific business logic implementation, on the client, or in the Web Service. This is a more difficult thing recently.
In fact, when I just entered, all people have emphasized the importance of demand analysis and design, and many people regard them as "silver bomb". Until three years later, I really can build a program in accordance with my own ideas, and those agile development, XP, test driver development, I don't know when to go to the development practice?
three
My design is almost intensified. Meet the intervening of the definition of the Web Service interface, and finally I still put the logic implementation in the client, and some kinds of structures can be passed to the Web Service through serialization. Of course, this statement is somewhat inaccurate, the web service interface is defined according to business logic, which can return serialized objects or DataSet.
I don't know if my design is correct, but these days have come, and there is no clear problem. I am probably to divide business logic into several classes, then designed databases according to these classes; when the definition of the database is almost almost, I will know which data I need to maintain. Below I started to define my interface, but it seems that it is not successful. Because I don't know how many interfaces I need. So, I reopeously returned to the process of defining business logic, I will retreat the business logic again. What functions they need to do, they need those interfaces. After the execution route of these software, I started merged some similar interfaces. So I summed out these interfaces into a dozen dialogs, ok, my UI class has come out. During this process, I have clearly clear that there should be several controls on each interface.
I am now defining a way of business logic, they are the most important part of this software. And I am currently missing how to call the business logic method in the UI class and then call the Web Service by these methods.
I am doing this job, maybe I can encode two days later. Oh, first build the database ...
four
This weekend is very comfortable, where didn't go, stayed at home for two days. After eating sleeping days, the frame of the code will take the frame. To be honest, I am the first time I use VS.NET to develop a Project. It is indeed a great progress than the previous IDE (don't forgetting VC6, but the products in 1998 ...).
I can put the document, code, and resources in Solution Explorer, manage it very convenient. But I don't know why the code will turn black after putting the Form into a folder. I don't know if I have a problem, or the BUG of VS.NET.
Ok, let's talk about my procedure, I realize business logic and interface classes, everything is okay, I make full use of this cute stuff, write C sometimes lazy, simply make member variables into public . Now I am very comfortable when I seem to return to use VCL. After all, the head of .NET is the developer of Delphi.
Fives
It turns out that code and text are not available. Writing a little text is also normal when you write a product document, and it is normal. But when you really start writing code, even if you have a writing of the idea, you will never knock a few hundred lines of code, there will be an idea of playing with the keyboard.
I am an extremely no time concept. After writing the system analysis, I spent a few weeks in the leisurely, I just wrote a little program on the weekend, but I just want to stop, I still have to watch TV, listen Listen to music, play games ...
When I went on the last weekend of May, I started to be nervous. At that time, I had a 30% function in the past three weeks before June 12. The two weeks of time must not only write, but also to complete a simple test, release, these lives look trivial, but actually cost time.
However, I found out that there are some problems in estimating project progress in accordance with functional points. Although I only completed the function of about 30%, I have already completed the architecture and technical point of the system. In other words, there is no technical difficulty in the road after I will be in the road. And as I mastered with C #, the development schedule is much better than before. So, I think that when I estimate the project progress, I should not ignore the impact of technical difficulties, and the programmer's skills are a dynamic process. We should not see a person's development efficiency as a fixed value. Skilled, physical condition, and even mood have great impact on development efficiency, and can even reach multiple relationships.
The next two-week purgatory trip is more smooth. Since the company is more, I have not used it if I compress my sleep time. But sleep time and work efficiency are great. In the case of brain fatigue, logical thinking is easily confusing, and the chaos of programmer logical thinking, oh, or unclear, give software may be deadly defects. So I agree with the views in XP. I only worked for 40 hours a week. I even think that if the programmer should not exceed 30 hours per week, unless it is the last week. If you set a reach yourself, you will think just a week. After a week, we can enjoy the holiday, give the customer demo, temporarily bid to boring code life, so everyone will put a lot of things, increase productivity to one High degree. But if it is not enough for a week, the strike from programmers is from both physiological and psychological. The sprint in front of program development is very similar to the charge in the war. If the first charge, all soldiers will play the best state, one drum to tear the other side's defense, but if a charge fails, then, will then decline, Three strokes. Therefore, the timing of the project manager chooses the charge, sometimes, the success or failure of a project may be the difference.
The entire program is satisfied, because I have used product design around the time, and many logical issues are clear at that time. The entire architecture is sturdy and elastic in the later development process, I believe that if you add or modify some functions, our changes will be small. The biggest advantage of logical code and interface is that the duplicate code is reduced, and it is easy to understand. The only thing is trouble is that because I don't use a unit test, in order to complete a function, I may want to modify three classes - interfaces, logic, service calls, or database operations.
What makes me dissatisfied is that the definition of the Web Service interface is not good. Because I define a lot of similar, in accordance with the needs of the program, if I want to get a set of data, there is an interface to return DataSet , And I need to get one of them, then another interface is needed. This is a little unsatisfactory.
In addition, it is safe. I put the password directly to the database, which is extremely dangerous; and the user's verification is just playing in the login, and when calling the Web Service method, do not verify The legality of the caller, which is also extremely dangerous in the wireless environment, anyone can call your Web Service through the wireless device, get some data, or modify the data. For security considerations, it is the focus of the next phase.
Within the scope of the power, I still have some known attack methods, such as SQL injection, I have used my own way, once the possible SQL injection attack, the Web Service will throw an exception.
It is said that it is worth the exaggerated place. The most appreciation is the style of the interface. It is the lowest. There is also a multi-line display ListView control, which I have already impected it very much, and this time I finally realized the third party code.
The experience of this development is so much, this time I am a person from product definition, design, encoding, database, test, and release it all the way. Many places are done according to their own ideas. The effect is not bad. Some places have also surprised their childish, but the happiness after the bite is coming over, but everything is almost demonstrated.