Software engineering practical experience

Table of contents

  Preface

1. Common software development life cycle models include:

2. Requirements analysis

3. Software security and confidentiality

4. Challenges and future of software engineering

5. Project preparation

6. News project code demonstration

Summarize


  Preface

Software engineering practice refers to the process of applying software engineering knowledge and technology in practical work. It includes work in software development, testing, maintenance and management. Software engineering practice and theory cooperate with each other. The former verifies theory through practice, and the latter provides guidance and support for practice. In software engineering practice, many aspects such as project management, programming, quality assurance, configuration management, testing, and requirements analysis need to be considered. These aspects involve the basic principles, methods and technologies in software engineering, such as agile development, object-oriented design, software testing, continuous integration, etc. Software engineering practice requires developers to continuously optimize and improve work processes and methods through continuous practice and accumulation of experience, in order to achieve the purpose of improving software quality, improving development efficiency, and reducing development costs.

Software development life cycle model
Software development life cycle model refers to a model that divides the software development process into different stages and activities, and combines these stages and activities into a complete and orderly process to standardize the software development process. .

1. Common software development life cycle models include:

Waterfall model: Sequential execution, each stage is completed before entering the next stage.

Iterative model: Similar to the waterfall model, but multiple iterations are performed at each stage, and new features are added in each iteration.

Incremental model: Divided into multiple iterations, only part of the functionality is completed in each iteration, and each iteration is a complete, deliverable product.

Spiral Model: Based on cycles, each cycle consists of four phases: planning, risk assessment, execution and evaluation.

Agile model: Emphasizes rapid iteration and flexibility, and encourages close collaboration with customers.

Which model to choose needs to be comprehensively considered based on the needs of the specific project, time, manpower, resources and other factors.

Requirements Analysis and Specification
Requirements analysis refers to the analysis and understanding of user needs to determine what functions and performance characteristics the system should have. It is one of the important stages in software engineering. Its main purpose is to determine what the system should do, provide developers with development guidance, and avoid waste and redundancy in the development process. The result of the requirements analysis is the requirements specification, which is a detailed description of user needs, including requirements for system functions, performance, interfaces, data, security and other aspects.

A specification is a document or specification that describes in detail the requirements and design of a software system. It includes the requirements for system functions, performance, interface, data, security and other aspects, and is the basis of software development. The main function of specifications is to provide detailed and comprehensive guidance and evaluation basis for system development, thereby avoiding errors and deviations in the development process and facilitating system maintenance and upgrades.

Requirements analysis and specification are indispensable stages in software development. Only on the basis of fully understanding user needs can we provide users with satisfactory software products. At the same time, specifications are a bridge between developers and users. It can clarify communication and cooperation between the two parties, making the software development process smoother and more efficient.

Software design and architecture
Software design refers to the process of designing the structure, composition, interface, function, operation, implementation technology and other related elements of the entire software system based on the requirements after determining the software system requirements. Software architecture refers to the structure and composition of a software system. It is the core of software design and determines important features such as performance, maintainability, and scalability of the software system. In software design and architecture, it is necessary to consider how to reasonably divide various functions into modules, how to design interfaces, how to design data structures and algorithms, etc., in order to meet the performance, security, reliability, etc. of the software system. requirements. At the same time, the maintainability and scalability of the software system also need to be considered during the design and architecture stages so that when modifications and upgrades need to be made in the future, they can be implemented quickly and safely.

Coding and Debugging
Coding and debugging are two important aspects of the software development process. Coding refers to the process of converting design documents into actual program code. Developers use programming languages ​​to create software applications based on requirements and functional specifications.

Debugging refers to the process of discovering errors or faults in the code during program development and then repairing these problems. Debugging is a very important and necessary process that requires developers to carefully analyze the code and inspect its running process step by step to identify errors or bugs.

There is a close connection between coding and debugging. When coding, developers need to carefully consider problems that may arise in their code and use best practices wherever possible to avoid these problems. But even the best developers can't avoid all mistakes, so debugging is crucial. Debugging helps developers find errors in their code and fix them to ensure the software functions properly.

In summary, coding and debugging are two inseparable aspects of the software development process. Only by rationally using techniques and tools during coding and debugging can the efficiency, reliability and quality of software development be ensured.

Software testing and quality assurance
Software testing is to discover and report defects or errors in software to ensure that the software meets specified quality requirements. It is a very important link in the software development process, which can ensure that the reliability, availability, stability and other aspects of the software are fully guaranteed.

Software quality assurance is a comprehensive work aimed at ensuring the overall quality of software. It includes monitoring and managing all aspects of the software development process to ensure that the software can be delivered on time, meet user needs, and achieve expected quality.

The main purpose of software testing and quality assurance is to ensure the quality of software products, improve software reliability and stability, reduce software defects and failures, thereby improving user satisfaction and trust.

Configuration Management and Version Control
Configuration management is a system for tracking the various elements used in the software development process, including source code, documentation, compilers, linkers, and other tools. It ensures that these elements are up to date and that the relationships and dependencies between them are correctly maintained.

Version control is a system that records changes in each version of source code or files, allowing developers to roll back to older versions and track the history of code changes. It helps teams collaborate while also ensuring code consistency and traceability.

These two concepts are often used together. In the software development process, version control is used to manage the modification and collaboration of code and other files, and configuration management is used to manage all elements used in the software development process.

Project Management and Team Collaboration
Project management and team collaboration are closely related concepts because project management requires integrating the capabilities and resources of team members to achieve project goals. Here are some frequently asked questions and advice about project management and team collaboration:

1. How to maintain communication among team members?

Recommendation: Use online collaboration tools such as Slack, Microsoft Teams, or Zoom to facilitate real-time communication between members. Arrange meetings regularly and determine clear work arrangements, responsibilities and project milestones, ensure that each member is clear about their job responsibilities and tasks, and monitor the progress of the project.

2. How to ensure the cooperation of team members?

Recommendation: One of the best ways to promote team collaboration is to build good relationships and trust among team members. Regular group activities, cross-department meetings, team-building activities, etc. are all good ways to improve team spirit.

3. How to deal with possible team conflicts?

Recommendation: One of the best ways to identify and solve team problems is to tailor your approach to the type of problem. Use conflict resolution techniques such as communication, negotiation, compromise, and compromise to minimize and resolve conflicts among team members.

4. How to monitor and evaluate the work performance of team members?

Recommendation: Regularly review work performance to ensure team members complete tasks and job responsibilities in a timely manner. Give positive feedback and suggestions to promote members' personal development and teamwork. Make a summary and evaluation at the end of the project to provide reference for future projects.
 

2. Requirements analysis


System requirements: are all the activities that the system must perform/support and the constraints that must be met. Usually divided into functional requirements and non-functional requirements.

Functional requirements: The activities that the system must perform. Taking the payroll management system as an example, it may include electronic payment, calculation of wages, calculation of payroll taxes, maintenance of employee-related information, social security, medical insurance, provident fund payment, etc.

Functional requirements are determined based on the company's processes and business rules for conducting business transactions. Sometimes these rules are well documented and easily identified and described; other rules may be hidden and difficult to detect. Discovering such rules as early as possible is an important task of requirements analysis.

Non-functional requirements: are inherent characteristics of a system that are distinct from the activities that the system must perform or support. Distinguishing functional/non-functional requirements is not easy, and some architectures have been developed to identify and classify requirements, such as the FURPS+ architecture (an acronym for Functionality, Availability, Reliability, Performance, Supportability).

3. Software security and confidentiality


Software security and confidentiality are very important because software contains confidential information of companies, government agencies, and individuals. Software security means that the software is not vulnerable to attacks, cannot be easily exploited by hackers or malware, and does not leak users' private information. Confidentiality means that only authorized personnel can access and use the software.

To ensure software security and confidentiality, a series of security measures must be taken. Here are some common security measures:

Encryption: Encrypt sensitive data using encryption algorithms to prevent data leakage.

Authentication and Authorization: Only authenticated and authorized users can access the software.

Secure Coding: Ensure the functionality and security of your software by following best coding practices and specifications.

Security testing: Conduct regular security testing to identify potential vulnerabilities and security issues.

Security Updates: Timely updates to software and systems to address known security vulnerabilities and flaws.

Security awareness training: Provide employees with training on software security and confidentiality to improve their security awareness and prevention capabilities.

Software security and confidentiality are very important to any organization and should therefore be considered part of the job and receive adequate attention and resources when appropriate.

4. Challenges and future of software engineering

1. Complexity
The complexity of software systems is one of the main challenges of software engineering. As software systems grow in size, their complexity continues to increase. This requires development teams to adopt more complex and advanced technologies to deal with these challenges, such as artificial intelligence and machine learning.

2. Security
With the rapid development of the Internet and digitization, the security of software systems has become an increasingly important issue. Development teams must use security best practices, such as secure coding practices and encryption techniques, to ensure the security of software systems.

3. Automation
With the advancement and development of technology, automation has become a trend in software engineering. Automation can improve the efficiency and quality of software systems and reduce the workload of development teams. Automation includes automated testing, automated deployment, automated maintenance, etc.

Future software engineering will pay more and more attention to the application of automation and artificial intelligence technology. As artificial intelligence technology develops, development teams will be able to use more advanced technologies to develop and maintain software systems. At the same time, software engineering will continue to grow and evolve to meet growing needs and challenges.
 

5. Project preparation

Create a new project

 

 Prepare maven

6. News project code demonstration

<template>

  <div id="tab-bar">
    <tab-bar-item path="/home">
      <i slot="item-icon-active" class="el-icon-message-solid" />
      <i slot="item-icon" class="el-icon-bell" />
      <div slot="item-text">首页</div>
    </tab-bar-item>

    <tab-bar-item path="/my">
      <i slot="item-icon-active" class="el-icon-user-solid" />
      <i slot="item-icon" class="el-icon-user" />
      <div slot="item-text">我的</div>
    </tab-bar-item>

  </div>

</template>

<script>
import TabBarItem from '@/components/TabBar/tabBarItem'
export default {
  name: 'TabBar',
  components: { TabBarItem },
  data() {
    return {

    }
  },
  methods: {

  }
}

</script>

<style>
#tab-bar {
  display: flex;
  background-color: #f6f6f6;
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  box-shadow: 0 -1px 1px rgba(100, 100, 100, 0.08);
}
</style>
<template>
  <div class="tab-bar-item" @click="itemClick">
    <div v-if="!isActive">
      <slot name="item-icon" />
    </div>
    <div v-else>
      <slot name="item-icon-active" />
    </div>
    <div><slot name="item-text" /></div>
  </div>
</template>

<script>
export default {
  name: 'TabBarItem',
  props: {
    path: {
      type: String,
      default: ''
    }
  },
  data() {
    return {
    }
  },
  computed: {
    // 判断当前条目是否被选中
    isActive() {
      return !this.$route.path.indexOf(this.path)
    }
  },
  methods: {
    // 跳转路由
    itemClick() {
      this.$router.replace(this.path)
    }
  }

}
</script>

<style>
.tab-bar-item {
  display: flex;
  flex: 1;
  justify-content: center;
  text-align: center;
  height: 49px;
  line-height: 49px;
  cursor: pointer;
}
</style>

js

import Vue from 'vue'
import Router from 'vue-router'

Vue.use(Router)

export const constantRoutes = [

  {
    path: '',
    redirect: '/home'
  },

  {
    path: '/home',
    component: () => import('@/views/news/home'),
    meta: {
      keepAlive: true
    }
  },

  {
    path: '/news',
    component: () => import('@/views/news/news')
  },

  {
    path: '/my',
    component: () => import('@/views/news/my')
  },

  {
    path: '/register',
    component: () => import('@/views/news/register')
  },

  {
    path: '/list',
    component: () => import('@/views/news/list')
  },

  {
    path: '/401',
    component: () => import('@/views/401'),
    hidden: true
  },

  {
    path: '/404',
    component: () => import('@/views/404'),
    hidden: true
  }
]

const createRouter = () => new Router({
  mode: 'history', // require service support
  // scrollBehavior: () => ({ y: 0 }),
  routes: constantRoutes
})

export const router = createRouter()

// Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465
export function resetRouter() {
  const newRouter = createRouter()
  router.matcher = newRouter.matcher // reset router
}

export default router

const my = {
  state: {
    // 存储浏览历史
    histroy: [],
    // 存储我的收藏
    favourite: [],
    // 是否已登录
    logined: false
  },

  mutations: {

    SET_HISTROY: (state, histroy) => {
      state.histroy.unshift({ createTime: new Date(), histroy: histroy })
    },
    SET_FAVOURITE: (state, favourite) => {
      state.favourite.unshift(favourite)
    },
    SET_LOGIN: (state, login) => {
      state.logined = login
    }

  },

  actions: {
    setHistroy({ commit }, histroy) {
      return new Promise(resolve => {
        commit('SET_HISTROY', histroy)
      })
    },

    setFavourite({ commit }, favourite) {
      return new Promise(resolve => {
        commit('SET_FAVOURITE', favourite)
      })
    },

    setLogin({ commit }, login) {
      return new Promise(resolve => {
        commit('SET_LOGIN', login)
      })
    }
  }
}

export default my

Summarize
 

Software engineering is an engineering discipline that involves all aspects of software production.
Software products are not only programs, but also related documents. The basic attributes of software products are maintainability, reliability, information security, efficiency and acceptability.
The software process includes all activities involved in developing a software product. The activities in the software process mainly include: software description, development, effective verification and evolution.
The basic concepts of software engineering are universally applicable to all types of system development. These basic concepts include software processes, reliability, information security, requirements, and reuse.
There are many types of systems in the world. The development of each type of system requires a suitable software engineering tools and techniques. There are almost no universal magical software design and implementation techniques.
The basic ideas of software engineering apply to all software systems. These basic ideas include managed software processes, software dependability and information security, requirements engineering and software reuse.
Software engineers have a responsibility to the software engineering industry and society as a whole, and should not only care about technical issues.
A code of conduct issued by a professional association sets out a set of standards of conduct that members of the association are expected to abide by.
 

Guess you like

Origin blog.csdn.net/xiranmoo/article/details/131370673