Software Development: What do I need to do? How to do it? What should I do?
I. Process: Control and Manage Software Development Activities
Software processes are used to control and manage the development activities and progress of Software Teams. For individuals, certain process methods are also required to standardize their development processes.
A solution worth trying is iteration + Waterfall Model + test-driven development. This solution first divides the system into multiple iteration stories, then uses the waterfall model for each iteration story and integrates the test-driven development concept.
Specific Practices:
S1: divides system development into multiple story iterations. Each story contains several modules.
S2: For the modules in each story, use the process of "requirement analysis-design-test cases-coding debugging-test-module integration-user feedback-iterative sub-stories" to complete the process; after each module is complete, it is integrated into an iterative sub-story.
Ii. Method: How to build software modules and Applications
The most basic elements in computers are data and logic, which correspond to the early era of machine language and assembly language. However, this is not conducive to the development and management of large software, and the program is prone to a large number of chaotic goto jump logic. Therefore, a structured program design method has emerged. The main idea is: program = Data Structure + algorithm + module organization. First, use standardized control statements (sequence, condition, and loop) to eliminate the easy-to-use goto jump logic. Second, use modular ideas to manage the construction of software. This method is based on pipelines and redirection. A pipeline is a program input that can act as the output of another program. Redirection specifies the data source or data destination as the expected stream (standard I/0, file, etc ). Through static analysis of the program, it is usually possible to accurately infer the behavior of the program.
Then, an object-oriented programming method was introduced, which decomposed the application into objects and interaction and communication between objects. Objects are well-encapsulated data and closely related logic. One of the complexities of object-oriented programming is that it is impossible to deduce the behavior of a program through static program analysis. One of the reasons is that the polymorphism mechanism is used.
For the interoperability between various systems, the concept of service-oriented emerged. Use process-oriented or object-oriented methods to package certain functions into services for external users. This requires corresponding application protocols, such as the Data Exchange Format XML. Service-oriented: Object-oriented (process) + service module + application protocol.
What kind of programming and software construction methodology will emerge in the future? Wait and see.
Iii. Languages, frameworks, and available libraries: select existing technologies and frameworks to build applications and services
In order to quickly build applications, we usually do not re-invent the wheel, but directly select the appropriate existing framework, library, and language. For example, Java Web development may be completed using STRUTS + hibernate + spring, C ++ has STL and MFC, and C has a large number of standard library functions available, PHP and Perl both have a large number of modules to choose from. Sometimes you may need to develop your own proprietary database to avoid relying on decisions of other business companies.
Fortunately, good open-source tools and software can usually be found as the basis for development. Of course, the advantages and services of open source should also be used to give back to the open source community in some way.
4. Tools and IDE: select appropriate tools and use them efficiently
Sharpen the knife without cutting back the firewood. Building your favorite toolbox is one of the elements for efficient application development. In Windows, program editing tools include ultraedit and sourceinsight. in Linux, program editing tools include Emacs and Vim. Compilation tools include GCC, G ++, and javac. Run the debugging tool GDB, the test framework includes xunit and other deployment tools such as ant, make, and maven. The modeling tools include sketch, UML, and code analysis tools such as lint, profile, code control CVs, and SVN. selecting a good ide is also very important. For example, eclipse is a very good javaide.
V. Environment deployment and software release and feedback
After the software is developed, you must deploy the running environment. First, you must know the platform on which the software will run: Windows, Linux, UNIX, Mac, or cross-platform? Second, for the customer/server model, you must configure the corresponding server and client software, such as Apache, tomcat, JBoss, Browser IE, and Firefox in Web applications.
In the past, software was released mainly in the form of a single machine. With the advent of the internet age and the rise of cloud computing, the future of software release will focus more on several mainstream platforms, published in the form of an online App Store. After the release, you must carefully listen to your feedback to continuously improve the functions and services of the software.
Vi. internal strength: Quickly comprehend New Technologies
No matter which industry is engaged in computer, profound internal strength is very important. A solid professional foundation and agile and meticulous thinking can help you quickly understand new technologies. Professional basics include: 1. In-depth and overall understanding of computer systems; 2. operating system, data structure, algorithm design, database, program network communication, etc.
We need to do a good job in practical development, starting from two aspects: 1. Be familiar with the dynamics and technologies in the development field; 2. Read a group of books, read extensively, and draw useful inspiration from wherever possible.
VII. Principle: What kind of software is built?
1. build necessary services;
2. Do not do unnecessary functions, but leave a back path for scalability;
3. Timely delivery of software;
4. Reusable, maintainable, and scalable;
5. security and reliability;
8. Habits: Build the development habits and professional qualities of high-quality software
1. Communicate with peers to understand what they are doing and Its Significance
2. Good at Problem Analysis and Modeling
3. agility and response to changes
4. Maintain organization and focus
5. Do not destroy good development habits for a short period of convenience.
6. write code to express your thoughts
7. Continuous Learning
8. Configuration Management and source code control
9. Unit Test
10. Continuous Integration
11. Maintain short-term iterations
12. Evaluate the development speed
13. Tracking Problems
Basic knowledge of Software Development