Learning This course, as well as theoretical and practical courses, not only let me master software engineering theoretically, but also from a variety of examples, so that the theory and practice has been a good combination. The whole semester down, generally still learned a lot of things, there are many places is worth certain, in fact, in my opinion, software engineering is not so much a course, it is a thought. is a process of how to analyze and deal with the problem, it should be said that its scope is far more than confined to the course, has become a comprehensive set of ideas to solve the problem.
The whole book content logic is clear and gradual, first of all, I would like to describe what we have learned, the first chapter is from the overall analysis of the development of software engineering this subject and the social environment, and then the following chapters in-depth analysis of the software open process and model, software project management, computer engineering, demand analysis, Structured analysis modeling and modeling based on UML object-oriented analysis. Then I will describe in detail my understanding of the course's knowledge points to summarize:
Software: Software is the ability to complete scheduled functions and performance of the executable computer program and make the program to perform the necessary data, plus the description of the program's operation and use of the document. Software Features: ① software is a logical entity, not a specific physical entity, and therefore it is abstract. ② Software is a product that transforms knowledge and technology into information through people's intellectual activities. ③ software becomes a product, its production is simply a copy, different from the hardware manufacturing. The ④ maintenance process is much more complex than hardware and can even cause new errors. Software crisis: Refers to the software development and maintenance process encountered a series of serious problems. The cause of the software crisis: ① software maintenance costs rise sharply, directly threaten the expansion of computer applications. ② software production technology is progressing slowly. Software engineering is the engineering discipline that directs the development and maintenance of computer softwares. Software life cycle: a software from definition to development, use and maintenance, until eventually discarded, to go through a long period of time, often the software experience this long period of time called the life cycle. The life cycle of software can be divided into eight stages: definition of ① problem, ② feasibility study, ③ requirement analysis, ④ General (summary) design, ⑤ detailed design, ⑥ coding and Unit test, ⑦ Comprehensive test, ⑧ software maintenance;
Waterfall Mode: is the traditional software development mode, in which the "waterfall" is the image of this model expression, from the peak poured down the water, from top to bottom, gradually refinement. Its characteristics are: linearization process, divided into analysis, design, coding, integration and other stages, and each stage of progressive, not allowed to cross. Milestone management, phase review, document-driven, concise process steps for engineering applications, and quantify the project process through milestone management mechanisms. Its obvious advantage is that no stage is completed before the completion of the phase of the results of the review, which makes the software errors can be found early in a phase and early resolution, overall waterfall mode has a good quality assurance mechanism, has a strong vitality.
Prototype Evolution mode: Direct simulation or simulation of the software, only need to analyze the requirements framework for prototype creation, and then gradually refine and improve the prototype system, through version updates to meet the needs of the user for the various aspects of the software.
Incremental mode: The development process has three task domains, namely, design structure, development components and integrated system, it has a perfect engineering management mechanism, but also can adapt to user requirements change, is conducive to quality monitoring, and the local component-based construction, is conducive to the gradual construction and improvement , because the first delivery of core components can reduce the technical risk of the project.
Spiral mode: Is a good way to evade the development risk process, the project is based on the task of the spiral, each spiral from the inside is the requirements analysis, software design, system integration, validation and delivery.
The whole process of software development: ① needs the project team, the formation of a good team can develop more quality software products. The task development team requires small and refined members, most of whom are within 8 people, and the main members are project leaders, developers, data managers, and software testers. The ② Project plan is designed to make the software development work in an orderly fashion, including task assignments and milestone-based scheduling, and the Gantt Chart and task Network Diagram are tools used to describe the schedule. The project proposal can be used as a guide for software development. ③ project cost estimation, because the project has from the various aspects of the cost including payroll expenses, site fees, travel expenses, equipment costs and data costs, but the software is mainly to the human cost estimates, the commonly used methods have procedures code cost estimation method. ④ Software Risk management includes a number of uncertain risk factors, such as program risk, management risk, demand risk, technical risk, personnel risk, product risk, user risk and business risk, etc., while the main tasks of risk management are: risk identification, risk assessment, and risk prevention. ⑤ Software document management, software documentation is the result of engineering model software development, including technical documents, management documents and user documentation. ⑥ software configuration management and software quality management, including configuration planning, software change control, software version control and quality control plan.
The computer system consists of many elements such as hardware, software, data resources, network resources, people using the system. There are three typical computer architectures: The ① host architecture, which centralizes all intelligence and relies on the terminal interface to connect to external devices. ②client/server structure, intelligent distribution in the server and client, and rely on the network connection into the system, wherein the server is in the core location, providing passive core services, the client is in the edge location, can proactively access the server, seeking service support. ③browser/server structure, can adapt to the special structure of Internet remote interaction, based on Web server building.
Demand Analysis: System development needs analysis is very important, it is to effectively solve the needs of users to carry out a project activity, the need to consider the needs of the problem is functional requirements, data requirements, performance requirements and interface requirements, the developer to undertake the analysis of the task, the core is the user. There are three steps: ① to obtain customer demand, customer refers to an individual or institutional department, the general method is to investigate, including interviews, seminars, questionnaires, valet and collect information, the requirements of the specification can express the user's software value. ② establishes a demand model, which is a graphical representation of user requirements, and some commonly used models are: Business tree, use case diagram, activity diagram. It is used for structural requirement modeling, System business example and reflection system workflow respectively. ③ The requirements verification, the main contents to be verified are: validity verification, conformance verification, integrity verification, reality verification and verifiable verification. Structured Analysis Modeling: It is based on the requirements of the specification, a comprehensive explanation of the software issues, including four aspects: ① data Modeling, which is closely related to database design, ER diagram involves entities, relationships, attributes and other graphic elements, A database conceptual model is established at the business level, which is generally used for early modeling ideas. ② function modeling, is the diagram of the system data processing, data flow diagram is a common modeling tool, involving data interface, processing, data flow, data storage and other graphic elements to describe the system data processing details. ③ behavior modeling, behavior model is used to say Oh name software system and environment interaction, State transition Diagram common software behavior modeling tools involve state, event and other graphic elements. The ⑤ data dictionary, which is the element used to define the software, gives the software elements a serious, calmer, and precise specification. The data, function, behavior and other elements in the demand analysis model need to be explained by the data dictionary to achieve a complete and comprehensive specification definition of the system.
Object-oriented analysis modeling based on UML objects: UML is a unified modeling language, has unified syntax, semantics and pragmatic rules, its modeling process is characterized by: use case-driven, framework-centric and incremental iterations, through the package to achieve effective integration of the Model Management. Includes three parts: ① use case modeling, it is oriented to user needs, can reflect the user value of the system, the basic elements of use case diagram have use cases, participants, communication, use cases have generalization, extension and inclusion relationships. ② activity modeling, activity diagram is used to describe the dynamic process of the system, the main graphical elements are: activity, transformation, starting point, end point, judgment, concurrency, synchronization, Swimlane, etc. Can describe high-level business-level activities that involve the entire business process, modeled on each use-case activity, reflecting the details of the internal activities of the use case. ③-Class analysis modeling, where the entity classes are considered only, the data represented by the entity classes usually have a certain relationship with each other, and depending on this relationship can form an organized program data structure. The main data relationships between entity classes are: Association, clustering, generalization.
In Class I am still very serious to listen to what the teacher told the content, I think his thoughts and I have always come to develop the overall quality of computer students understand or to a certain extent, the so-called demand acquisition, it is a negotiation, debate, communication process, is not simply a compilation program can solve the problem. From what I have seen and heard, I am most afraid of the computer department students are said to be a person with thick glasses, can only be programmed in front of the computer, in the communication field do not know what to say and a word can not say. I think such people have no future after entering the society, at least they lack the ability to communicate with people. And this course, to some extent, gives us these students a chance to exercise their abilities on the other hand, and imagine that a person who has the skills and ability to communicate with others has achieved a much greater achievement than a mere program-making person. Secondly, this course teaches us the general procedure and process of completing a practical project, which I think is a very practical teaching content. When we graduate, this is a very useful skill that we actually use, and is not confined to the scope of software engineering, even if we are engaged in other industries, do we have to start from the need to get to the final product? It should be said that this is the value of the course. Whether in class, or students in the student work, I feel deeply, the technical work is like magic, in fact, the principle is very simple, even can be said simple ridiculous, but when you are making such a simple thing out, some laymen will sometimes use the eyes of worship to look at you, Think you are very powerful, very inscrutable. But the process of production they do not know, perhaps they will only know after the laughing, the original production process is so simple. This can be said to be the charm of technology, and as a series of requirements and after the process is similar to the magic secret process, but as the secret we do not need to go to the end, as to the extent of the revelation is that we are the extent of our learning, we want to let the other party know what we are doing? And how to do it? These things need to be described with a certain skill, the role is to let the other side understand their progress, but can not let the other side to interfere with their work process. Because we are a technician, the other side is only a layman, even if the other side know the magic of the operation process, also does not mean that they can change the magic of us to casually modify the magic of the reform, and we can use a different process to draw the same result, the process of the initiative how to grasp in our hands, Let's see how we can solve the mystery of the magic in a brilliant way. Of course, in purely theoretical, I think it is very successful to open such a course. But after all, there are too many uncertainties in reality.Of The most important factor is the teaching teacher and the students attending the lecture. These two can be said to be the decisive factor in the course of failure.
The course of software engineering emphasizes the understanding and mastery of basic concepts and basic knowledge, and focuses on the basic skills of software project analysis, design, implementation and maintenance. Pay more attention to the combination of "point" and "polygon". I still like this course, through the study of this course let me realize that theoretical study is very important, practice is more important, practice is the only criterion to test the truth, only the theory and practice, only to play the role of the knowledge we learn, more directly to create benefits, society and the country to contribute.
Experience in Software engineering learning