Development
Demand Analyst
After the project is determined, the analyst needs to communicate with the customer in depth and in detail. Understand how businesses and customers interact with each other in their businesses. Also, understand the various stakeholders involved in this project, to fully obtain standardized business needs from their ideas. It is important to thoroughly understand the business requirements, sort out the various functional points of the requirements, and determine the business nature of each function. In addition, we need to find out the non-functional requirements of the system. Because customers do not understand the software profession, their oral expression is completely a vague idea of the future system. Some customers may have self-explanatory requirements. Good demand analysts can not only clearly understand business needs, this report not only extracts the requirement analysis report from the oral functions of the business personnel, but also gives developers a clear and consistent understanding of the report without contacting the customer, senior requirement analysis engineers can also extract essential content from their needs. They can provide various reuse methods for finding essential problems in unstable requirements. It can discover potential demand problems and propose compatible and scalable solutions for businesses. In addition to analyzing the requirements, you must be able to understand the business requirements of the customer's organizations, personnel composition, and key figures. The analysis report provided by Alibaba Cloud can not only be accepted by the customer's grass-roots personnel, but also meet the requirements of senior leaders. After the hard work of the demand analyst, a specification for software requirements will be provided, which lays an important foundation for future work. It describes in detail the functions of the system, the operations and data formats of each function, the classification of system users, the priority of function points, the non-functional requirements of the system, and the data dictionary, system application environment, expansion points, maintenance functions, and even interface requirements.
Requirement Analysis Method:
1. Draw a system Association diagram. This association diagram is a simple model used to define the boundaries and interfaces between the system and external entities of the system. At the same time, it also clarifies information flows and real logistics.
2. Create a user interface (system operation interface) prototype and develop a possible local implementation, which makes many concepts and possible events more intuitive and clear. By evaluating the prototype, the user can help the project participants better understand each other's problems. Be sure to find out all the conflicts between the requirement document and the prototype.
3. analyzes the feasibility of each requirement, analyzes the feasibility of implementation of each requirement, and clarifies the risks associated with implementation of each requirement, including conflicts with other requirements, reliance on external factors and technical barriers.
4. determine the priority of the requirement. Determine the features or requirements of the product version based on the priority. When a demand change is allowed, add each change to a specific version and make the required change in that version plan.
5. Create a model for the requirement. The graphic analysis model is an excellent supplementary description of the Software Requirement Specification. They provide different information and relationships to help locate incorrect, inconsistent, missing, and redundant requirements. Such a model includes a data flow diagram, an object diagram, a State Transformation Diagram, a dialog box diagram, an object class diagram, and an interaction diagram.
6. Create a data dictionary that defines all data items and structures used by the system to ensure that developers use a unified data definition. In the demand phase, data dictionaries should at least define business data items to ensure that customers and development teams use consistent definitions and terms. Analysis and design tools usually include data dictionary components.
7. Use quality functions to associate product features and attributes with their importance to customers. This technology provides an analytical method to identify the characteristics that are most important to customers. QFD classifies requirements into three types: Expectation requirements, that is, the customer may not mention them, but they will be dissatisfied with the lack of requirements; general requirements; exciting demands, that is, the realization will bring surprises to the customer, however, if it is not implemented, it will not be blamed.
Tools used: UML, VISIO, and MindManager
Development Engineer
Commonly known as a programmer, it is said that "Congratulations, you have chosen a development engineer as your career; sadly, you have chosen a development engineer as your career ". This sentence is really very interesting. A good development engineer may start from writing code and master a wide range of development technologies (c, c #, java) to quickly become a system analyst, architect, the product designer should be the department director or CIO at the management level. The tools used for development may change from c to c ++ to java. Technology is constantly improving, and engineers have to keep learning. From COM, DCOM, COM +,. netRemoting, WebServices, and WCF, they always follow the technology. In our daily work, we are also exhausted and often let the testers shout, sometimes being educated by the boss. I once worked as a colleague for seven or eight years. I came back from a very good business trip and found that he was absent. I resigned and thought I had to leave for a big company, later, my colleague told me that he went out to open a noodle shop in Shaanxi. Software development engineers generally include. net and java. I am working on. net development and belong to the Microsoft camp. I am not very fond of discussing which camp is better and which has a future. The reason why I didn't mix java in Microsoft's. net camp is totally accidental, and my work and project needs are required. At present, there is no plan to do java. However, we often pay attention to the development of java and learn about some new technologies.
Daily work includes:
1. Undertake development tasks according to specific project requirements and fulfill the task objectives as planned
2. coding of software systems and modules
3. prepares project-related technical documents
4. Cooperate with system analysts to complete the requirement research and demand analysis of software systems and modules
5. Work with system analysts to design software systems and modules
6. Assists Testers in testing software systems and modules
Development engineers in a company are classified into senior development engineers, development engineers, and assistant development engineers. A software company that runs normally does not start from scratch and has its own technical accumulation, mature development frameworks, and public development components. The general work is carried out on this basis. After a new project is developed, the tasks that senior development engineers may assign are the core components of system technology, such as development frameworks, public code, database design, and data dictionary management; the Development Engineer will implement some general functions, such as several modules in the system. The assistant development engineer has a low level and will use the company's technical foundation to develop some simple functions or modules based on their predecessors, it is generally copied according to the code of the predecessors. Senior development engineers lay a solid foundation for the company's technology and write some public components and code. Or use new technologies to demonstrate how to use them. Development engineers can independently complete their tasks and put forward some good ideas. The assistant engineer will study hard and integrate it into the overall technical environment.
Development engineers are the implementers of the system and have a strong sense of accomplishment in their work. He has many development technologies, including Oracle, MySQL, Ms sqlserver, basic development languages C, C ++, Java, C #, System Modeling Language UML, XML, development Environment vs, Eclipse, jdeveloper, netbeans, server environment win2003, redhad, UNIX, application service environment IIS, websphere, WebLogic, development framework. net Framework, Java container, hibernate, spring, popular implementation technology design patterns, three-layer structure, COM +, WebServices, WCF, WPF, slivelight. Practically speaking, developers are an intermediate profession. The reason is very simple. No one wants to crawl on the keyboard every day, so they can't beat the code. The Project Manager kept pushing for the progress and received the Error Report from the test engineer. He said he did the mistake accidentally and immediately changed the report. Occasionally, it will be difficult for customers who do not understand how to operate. But not everyone can break through the Development Engineer and be promoted to a senior position. On the other hand, the Development Engineer is the most direct engineer for system implementation. Just like a magnificent building, the designer only draws on paper, but the construction team needs to work hard and finally get started. However, if you want to complete this project 1.1 times after your hard work, you will have a great sense of accomplishment. In addition, you will have a lot of experience in writing code for development. You need to constantly learn new technologies. In some cases, you need to consult with you for advanced positions. Therefore, on the other hand, development engineers may have to go through many senior positions. Almost all senior software positions have several years of development experience, with rich development and implementation experience, you can anticipate and analyze the technical needs of the system before developing the system in your senior position, lead everyone to complete the task successfully.
System Analyst
After several years of experience as a development engineer, I have accumulated a wealth of development experience. With continuous efforts, your position has been improved without having to coding every day. You can write documents and draw pictures for design.
System analysts are mainly involved in or in charge of the following tasks: Analysis of business requirements, implementation features, performance requirements, and overall technical design. Participate in and guide the development engineers to complete detailed design documents and code writing, solve the design and development work of key parts of the system, and formulate the format and content of the technical documents. Audits and manages the program code, scripts, databases, and other deliverables implemented by the system.
System analysts must constantly learn, practice, update knowledge, and optimize their knowledge structures. All these make system analysts a rare talent. A senior position in a software organization. Good system analysts are all generated from excellent development engineers, with solid development skills and rich programming experience. Without a thorough analysis and coding practice of the system itself, it is difficult to comprehend the essence of some of the difficult statements.
System Architect
When software and hardware systems have not developed to the current application scale, it is widely believed that textbooks are also talking about programs = data structures + algorithms. However, with the development of the system, the process of data volume, concurrent intervention of customers, changes to system requirements, operation and maintenance, and so on have made everyone pay more and more attention to the software architecture. Not only has the implementation technology of data structures (database design, classes, fields, etc.) greatly improved, but also the design of system technical structures and various system components, system deployment and so on. With computer network operating systems, virtualization technology, WEB servers, application servers, middleware, application containers, SOA, the promotion Architecture Design of Enterprise Service Bus and other technologies has become the primary consideration of software systems. After implementation of some projects, people gradually realize that even if you have good system analysis and design, however, as there is no in-depth analysis on the software architecture in subsequent system operations, there will be more and more troubles. For example, how can we remove the components that need to be replaced without affecting the business operation and launch the newly developed components. More and more systems are available in a large unit. How can we manage the data resources shared by these systems in a unified manner so that all systems can obtain the same data at any time and update it in a timely manner. System Architects analyze systems between systems and all system systems of an enterprise. In the next few years, the information system of an enterprise can easily meet business needs.
End
After learning about the above positions, I think everyone has a certain understanding of the types of people in a software company. The division of labor in a software organization with a certain scale is very detailed. I hope that you will not be unfamiliar with the technical positions of software companies in this lecture. Don't just know that I will be engaged in software in the future, so that I can understand my goals.