Pragmatic experience in software engineering

 After studying this course, there are also theoretical courses and practical courses, which not only allowed me to master software engineering theoretically, but also provided a good combination of theory and practice from different examples. After the whole semester, I have learned a lot in general, and there are many things worthy of recognition. In fact, in my opinion, software engineering is not so much a course as an idea. It is a process of how to analyze and deal with problems. It should be said that its scope has gone far beyond this course and has become a comprehensive collection of ideas that can solve problems. 

     Step by step from the shallower to the deeper. First, I will briefly describe what we have learned. The first chapter is an overall analysis of the development of the discipline of software engineering and its social environment. Then the following chapters provide an in-depth analysis of the software open process and Patterns, software project management, computer engineering, requirements analysis, structured analysis modeling and object-oriented analysis modeling based on UML, etc. Then I will introduce in detail my understanding of the knowledge points of this course: 

Software: Software is an executable computer program that can complete predetermined functions and performance and the data required for the program to execute normally, plus documents describing the operation and use of the program.

Features of the software:

① Software is a logical entity, not a specific physical entity, so it is abstract.

② Software is a product that transforms knowledge and technology into information through people's intellectual activities.

③After software becomes a product, its production is just a simple copy, which is different from hardware manufacturing.

④The maintenance process is much more complicated than the hardware and may even cause new errors.

Software Crisis:

Refers to a series of serious problems encountered during software development and maintenance.

Reasons for software crises:

①Software maintenance costs have risen sharply, directly threatening the expansion of computer applications.

②The progress of software production technology is slow. Software engineering is the engineering discipline that guides the development and maintenance of computer software. Software life cycle: A software goes through a long period from definition to development, use and maintenance until it is finally abandoned. This long period of software is usually called the life cycle.

The software life cycle can be divided into eight stages:

①Problem definition; ②Feasibility study; ③Requirements analysis; ④Overall (outline) design; ⑤Detailed design; ⑥Coding and unit testing; ⑦Comprehensive testing; ⑧Software maintenance; 

Waterfall model : It is a traditional software development model. The "waterfall" is the visual expression of this model. The water pouring down from the top of the mountain gradually becomes thinner from top to bottom. Its characteristics are: linear process; divided into several stages such as analysis, design, coding, integration, etc., and each stage is advanced step by step, and no crossing is allowed. Milestone management; stage review; document-driven; concise linear process steps that are easy to apply in engineering, and can quantify project progress through the milestone management mechanism. Its obvious advantage is that the completed phase results must be reviewed before the end of each phase, which allows software errors to be discovered and resolved as early as possible within each phase. Generally speaking, the waterfall model has a good quality assurance mechanism. Has strong vitality. 

Prototype evolution mode : To directly simulate or emulate the software, you only need to analyze the requirements framework and then create a prototype, and then gradually refine and improve the prototype system, and gradually meet the user's various needs for the software through version updates. 

Incremental mode : The development process has three task areas, namely design structure, development components and integrated system. It has a complete engineering management mechanism and can adapt to changes in user needs, which is conducive to quality monitoring, and each part is based on component structure. , which is conducive to gradual construction and improvement; because delivering core components first can help reduce the technical risk of the project. 

Spiral model : It is a model that can better avoid the development risk process. The project is promoted in a spiral based on tasks. Each spiral consists of requirements analysis, software design, system integration, verification and delivery from the inside and outside. 

The entire process of software development : ① A project team is required. Forming an excellent team can develop higher-quality software products. The task development team is required to be small and refined, with most members consisting of less than 8 people. The main members include project leaders, developers, data managers and software testers. ②The project plan is to make all software development work proceed in an orderly manner, including task allocation and milestone-based schedule arrangements. Gantt charts and task network diagrams are tools used to describe the schedule. The project plan can be used as a working guide for software development. ③ Project cost estimation , because the project has costs from all aspects, including salary expenses, site fees, travel expenses, equipment fees, and material fees, etc., but the software mainly estimates labor costs. Commonly used methods include program code cost estimation method, etc. ④Software risk management includes many uncertain risk factors, such as planning risk, management risk, demand risk, technology risk, personnel risk, product risk, user risk and business risk, etc. The main tasks of risk management are: risk identification, Risk assessment, and risk prevention. ⑤Software document management . Software documentation is the embodiment of the results of engineering model software development, including technical documents, management documents and user documents. ⑥Software configuration management and software quality management , including configuration planning, software change control, software version control and quality control plan. 

   A computer system consists of many elements such as hardware, software, data resources, network resources, and people who use the system.

There are three typical computer architectures:

①Host structure, the host concentrates all intelligence and relies on the terminal interface to connect with external devices.

②Client/Server structure, intelligence is distributed between servers and clients, and relies on the network to connect into a system. The server is at the core, providing passive core services; the client is at the edge, and can actively access the server and seek service support.

③Browser/server structure, a special structure that can adapt to remote interaction on the Internet, is built based on the Web server.  

   Requirements analysis: Preliminary demand analysis of system development is very important. It is an engineering activity that needs to be carried out to effectively solve user problems. The demand issues that need to be considered are functional requirements, data requirements, performance requirements and interface requirements. Developers are responsible for the analysis. The core of the task is the user.

There are three steps: ① Obtain customer needs. Customers generally refer to a person or organizational department. The general method is survey, including interviews, discussions, questionnaires, follow-up and data collection. The requirements specification can express the user's software value. ② Establish a demand model, which is a diagram of user needs. Some commonly used models are: business tree diagram, use case diagram, activity diagram. They are respectively used for structured demand modeling, system business examples and reflecting system workflow. ③ Carry out requirements verification. The main contents to be verified are: validity verification, consistency verification, integrity verification, reality verification and testability verification. 

   Structured analytical modeling:

It is based on requirements specification and provides a comprehensive explanation of software issues, including four aspects:

① Data modeling, which is closely related to database design. ER diagram involves graphic elements such as entities, relationships, attributes, etc. It establishes a database conceptual model at the business level and is generally used for early modeling ideas.

② Functional modeling is a diagram of system data processing. Data flow chart is a commonly used modeling tool, involving graphic elements such as data interface, data processing, data flow, data storage, etc., used to describe the details of system data processing.

③ Behavior modeling . Behavior models are used to describe the interaction between software systems and the environment. Commonly used software behavior modeling tools for state transition diagrams involve graphical elements such as states and events.

④The data dictionary is used to define the elements of the software so that the software elements can obtain serious, detailed and precise specifications. It is necessary to provide detailed descriptions of the data, functions, behaviors and other elements in the requirements analysis model through a data dictionary in order to achieve a more complete and comprehensive specification definition of the system. 

   Object-oriented analysis modeling based on UML objects:

UML is a unified modeling language with unified syntax, semantics and pragmatic rules. Its modeling process is characterized by: use case driven, architecture-centered and incremental iteration, and effective integrated management of models is achieved through packages. It includes three parts: ① Use case modeling, which is oriented to user needs and can reflect the user value of the system. The basic elements of the use case diagram are cases, participants, and communication; there are generalization, extension, and inclusion relationships between use cases. ②Activity modeling. Activity diagrams are used to describe the dynamic process of the system. The main graphic elements are: activities, transitions, starting points, end points, judgments, concurrency, synchronization, swim lanes, etc. It can describe high-level business-level activities, involving the entire business process, model each use case activity, and reflect the details of the internal activities of the use case. ③ Class analysis and modeling. Here we only consider entity classes. The data represented by entity classes usually have a certain relationship with each other. This relationship can form an organized program data structure. The main data relationships between entity classes are: association, clustering, and generalization. 

Guess you like

Origin blog.csdn.net/tengtengdish/article/details/131446516