Ten years of JAVA moving bricks - an overview of software engineering

Software engineering is a discipline concerned with the software development process , which involves the design, development, testing, deployment, and maintenance of software. The goal of software engineering is to use systematic methods and tools to ensure that software projects are completed on time, on budget and according to requirements.

**

• 7 basic concepts of software engineering:

**

**1. Software life cycle: **Software life cycle refers to the entire process of software from conception to decommissioning, including requirements analysis, design, coding, testing, deployment and maintenance.

**2. Requirements engineering: **Requirements engineering is a key process in software engineering, which involves collecting, analyzing, and defining user requirements for a software system to ensure that the software can meet user expectations.

3. Software design : Software design is the process of dividing the software system into modules or components according to the results of requirements analysis, and defining the interfaces and relationships between them.

**4. Coding and testing: ** Coding is the process of implementing code according to the specifications of the software design, and testing is the process of verifying whether the software conforms to the expected behavior.

**5. Software configuration management: **Software configuration management involves version control, change management and release management for each component in the software project to ensure the stability and traceability of the software.

**6. Quality Assurance: **Quality Assurance is to ensure the quality and reliability of software by formulating standards and specifications, as well as conducting quality inspection and testing.

7. Project management : Project management involves the management of software project planning, organization, resource allocation, and progress control to ensure that the project is completed on time and on budget.

• Nine principles of software engineering:

The principles of software engineering refer to some basic principles and guiding principles in the software development process, aimed at improving the quality, maintainability and reliability of software systems. Here are some common principles of software engineering:

**1. Modularization principle: ** Divide the software system into independent modules, each module has clear functions and responsibilities, so as to facilitate development, testing and maintenance.

**2. Reusability principle: ** Improve development efficiency and code quality by designing and implementing reusable components and modules for reuse in different projects.

**3. The principle of moderation: ** Avoid over-design or over-engineering, and only focus on the minimum functionality and complexity required to solve the problem.

4. The principle of high cohesion and low coupling : the elements inside the module are closely related to each other, but the relationship with other modules is weak, so as to improve the independence and maintainability of the module.

**5. Consistency principle: **Maintain consistency in the design, coding, and documentation of software systems to improve code readability and comprehensibility.

**6. Principle of testability: **Design and write codes that are easy to test, so as to facilitate unit testing, integration testing and system testing to ensure the quality and stability of the software.

**7. Phased principle: **Divide the software development process into different stages, each stage has clear goals and deliverables, so as to manage and control the development process.

**8. Documentation principle:** Write clear, accurate and easy-to-understand documents, including requirements documents, design documents, user manuals, etc., so that team members and users can understand and use the software system.

**9. Principle of continuous improvement: ** Continuously reflect and improve the software development process, and improve the team's ability and the quality of the software system by learning and applying best practices.

• Software Engineering Body of Knowledge

The software engineering body of knowledge refers to the collection of core knowledge and concepts in the field of software engineering, covering software development, management, quality assurance and other aspects. The following are some common parts of the software engineering body of knowledge:

**1. Software development methods and processes: ** Including waterfall model, iterative development, agile development and other development methods and processes, used to guide the planning, design, coding and testing stages of software projects.

2. Software requirements engineering : involves methods and techniques for collecting, analyzing, and defining user requirements to ensure that software systems can meet user expectations and needs.

**3. Software design and architecture: **Including object-oriented design, structural design and other methods, used to define the structure, components and interfaces of the software system, and ensure the system has good scalability and maintainability.

**4. Software testing and verification: **Involves techniques such as test strategy, test plan, and test case design to ensure the quality of the software system's functional correctness, performance, and security.

5. Software project management : including knowledge and techniques in project planning, schedule control, resource management, etc., to ensure that software projects are completed on time and on budget, and meet quality and demand requirements.

**6. Software configuration management: **Involves knowledge and tools in version control, change management, release management, etc. to ensure the stability and traceability of the software system.

**7. Software quality assurance: **Including quality standards, quality measurement, code review and other technologies to ensure the high quality, reliability and maintainability of software systems.

**8. Software engineering tools and environment: **Including knowledge and technology in integrated development environment (IDE), testing tools, configuration management tools, etc., to improve development efficiency and quality.

In the field of software engineering, there are also some related standards and frameworks to guide and standardize the practice of software development and management. Some common software engineering standards include ISO/IEC 12207 (Software Lifecycle Process), ISO/IEC 15504 (Process Evaluation Model), and IEEE 829 (Software Testing Documentation Standard), among others.

software related concepts

Software refers to a collection of computer programs and related data, which realize specific functions through the processing of instructions and data. Software can be divided into two categories: system software and application software.

**1. System software:** System software is a set of programs that control computer hardware and operating systems, and provide underlying functions and services to support the operation of application software. Common system software includes operating systems, compilers, drivers, and system tools.
**2. Application software: **Application software is a program developed to meet specific tasks or needs, and they are software that users use directly. Application software can be classified according to function and purpose, such as office software (such as word processing, spreadsheet), graphic design software, database management software, entertainment software, etc.

Conceptual characteristics of software include:

1. Executability : Software is a set of instructions and data that can be executed by a computer. They can be loaded into the computer's memory and executed in a predetermined order.

**2. Variability:** The software can be modified and updated according to needs to adapt to different functions and requirements. This variability makes the software flexible and scalable.

3. Abstraction : Software is the abstraction and modeling of problems in the real world. They use algorithms and data structures to solve problems without directly manipulating physical entities.

**4. Reusability: **Software can be designed as reusable modules and components for reuse in different projects, improving development efficiency and code quality.

5. Reliability : Software should have a high degree of reliability and stability, be able to perform correctly under various conditions, and be able to handle exceptions and error conditions.

**6. Maintainability: **Software should be easy to maintain and modify, including features such as code readability, understandability, and testability.

• Software Crisis

A software crisis refers to a series of problems and difficulties that arise during the software development process, leading to project delays, budget overruns, and even inability to deliver software products that meet requirements. There are several reasons for the software crisis:

**1. Complexity: **Software development involves a lot of complexity, including requirements analysis, design, coding, testing and other stages, each stage requires a high degree of professional knowledge and skills. Complex software systems are often prone to problems, leading to crises.

2. Requirements change : During the software development process, requirements often change. If requirements changes are uncontrolled or occur frequently, development teams may struggle to deliver software that meets requirements on time.

**3. Lack of communication and cooperation: **Software development is a teamwork process that requires effective communication and close cooperation among multiple roles such as developers, testers, and project managers. If the communication is not smooth or the cooperation is not close enough, it will easily lead to the software crisis.

**4. Technical challenges: **Software development involves the application of various technologies and tools. If the development team lacks the necessary technical capabilities or faces technical challenges, it may lead to a software crisis.

**5. Time pressure: **Software development projects are usually time-limited. If the time is too tight, the development team may face problems such as overtime and insufficient testing, thereby increasing the risk of software crisis.

These are some common causes of software crisis. To solve the software crisis, we need to consider these factors comprehensively and take corresponding measures to improve the efficiency and quality of software development.

The performance of software crisis can have the following aspects:

**1. Delayed delivery:** The software project cannot be completed according to the scheduled time node, resulting in a delay in delivery. This could be due to changing requirements, technical issues
, miscommunication, etc.

**2. Over budget: **Cost overruns occur during software development. This may be due to
additional cost increases due to changes in requirements, delays in development schedules, technical challenges, etc.

**3. Functional defects: **Software products cannot meet user needs or have functional defects.
This may be caused by unclear requirements, unreasonable design, coding errors, etc.

**4. Quality issues: **Software products have quality issues, such as low performance, poor stability, and security vulnerabilities. This could be due to inadequate testing,
lax quality control, etc.

**5. User dissatisfaction: **Software products cannot meet user expectations, and the user experience is poor, resulting in user dissatisfaction.
This may be caused by deviations in requirements understanding , unreasonable design, unfriendly interface and other reasons.

Guess you like

Origin blog.csdn.net/weixin_43485737/article/details/132477501