软件工程务实的学习总结

前言:

        在学习软件工程务实课程的过程中,我深刻地体会到了软件工程中理论与实践的结合是非常重要的。通过本课程的学习,我对软件工程的实践应用和开发流程有了更深层次的了解和掌握,这对我今后的软件开发工作有着较为重要的指导意义。在这篇学习总结中,我将回顾本课程的学习内容,并对这些内容进行汇总和总结。同时,我也将描述在学习本课程中获得的最重要的见解和技能。

学习内容:

软件工程务实是一门重要的课程,其涵盖了软件工程的各个方面,其中主要的学习内容包括:

1. 软件工程的基本概念和原理:学习软件工程的基本结构、流程、规范,以及质量控制等理论。

2. 需求分析与规格说明书:学习如何对用户需求进行分析和概述,如何制定详细的规格说明书,以及如何保证需求规格的正确性。

3. 架构设计和实现:学习如何进行软件系统设计,包括系统架构、软件模型、设计模式等,以及如何进行系统实现和集成测试。

4. 软件测试与维护:学习如何进行软件测试、如何运用测试工具、测试流程、测试管理等,以及如何进行软件的维护和升级工作。

5. 软件质量保障和合作开发: 学习如何确保软件质量,如何进行多人合作开发,并掌握相应的协作工具和流程。

在这些学习内容的基础上,我们还进行了设计开发项目,学习了如何进行团队合作和项目管理,更深入地体验和掌握了软件工程的实践应用。

新闻系统案例展示

 

可行性研究是指对某项计划性活动的可行性进行全面的调查、分析和评价,以确定其在技术、经济、市场和法律环境等方面是否具备可行性和可接受性的阶段。

一个完整的可行性研究应该包括以下内容:

1. 技术可行性分析:通过对技术、资源和条件等方面的深入分析,评估计划在技术实现方面是否存在难点和风险。

2. 经济可行性分析:对资源的投入和产出进行评估,分析项目的成本、效益和收益,决定项目的经济可行性、投资回报率和资产价值等。

3. 市场可行性分析:对目标市场的规模、特征、需求等进行全面的调查和评估,确定项目在市场中的位置和竞争力,判断项目的市场可行性。

4. 法律可行性分析:对项目涉及的法律法规、政策和标准等方面进行分析和评估,确保项目的合法性和符合规范要求。

5. 社会可行性分析:评估项目对社会、环境和人类福祉等方面的影响,确保项目的社会可行性和符合社会利益。

在进行可行性研究时,还需要进行项目风险评估和管理,制定相应的计划和措施,确保项目的顺利实施。

综上所述,可行性研究是项目管理和实施中非常重要的一环,只有通过全面的分析和评估,才能够确定一个项目的可行性和成功实施的前景。

 

 

设计与架构
软件开发工程的设计与架构是软件开发的重要环节,它们关注的是软件系统的整体架构,包括软件模块之间的组织、交互和关系,以及软件实现的整体流程和设计规范等。

软件设计可以分为三个层次:概念设计、详细设计和实现设计。概念设计是针对软件系统整体的一种初步设计,在这个层次上,开发人员需要确定各个模块之间的关系、数据流和功能,通常采用UML(统一建模语言)等建模工具进行设计。详细设计则是对概念设计的补充和细化,针对每个模块进行具体设计,明确各个模块的数据结构、算法和交互等细节。实现设计则是在详细设计的基础上,具体实现代码的设计和编写。

软件架构是软件系统的结构和组织方式,它关注的是整个软件系统的全局性质。常用的软件架构模式有三层架构、MVC架构、微服务架构、事件驱动架构等。在进行软件架构设计时,需要考虑系统的可扩展性、可维护性、安全性和性能等方面的问题,同时还要确保软件系统的易用性和用户体验。

部分项目代码

<template>
 <div class="container">
  <!--  <h2>登录</h2> -->
    <form class="login-form">
      <div class="form-group">
        <label for="username">账户:</label>
        <input type="text" id="username" v-model="loginForm.username" />
      </div>
      <div class="form-group">
        <label for="password">密码:</label>
        <input type="password" id="password" v-model="loginForm.password" />
      </div>
      <button @tap.prevent="login()">登录</button>
      <button v-if="editing2" @tap.prevent="tiaozhuanindex(sid,snickname)">新闻管理页</button>
	  <button v-if="editing2" @tap.prevent="tiaozhuanindex2(sid,snickname)">用户管理页</button>
    </form>
 
    <button class="register-btn" @tap.prevent="registers()">{{ editing ? '取消注册' : '注册' }}</button>
    <form class="register-form" v-if="editing">
      <div class="form-group">
        <label for="username2">账户:</label>
        <input type="text" id="username2" v-model="registerForm.username" required />
      </div>
      <div class="form-group">
        <label for="password2">密码:</label>
        <input type="password" id="password2" v-model="registerForm.password" required />
      </div>
      <div class="form-group">
        <label for="nickname">名称:</label>
        <input type="text" id="nickname" v-model="registerForm.nickname" required />
      </div>
      <button @tap.prevent="register()">确认注册</button>
    </form>
  </div>
</template>
 
<script>
	import {
		druser,
		setuser
	} from "../../common/api.js";
	export default {
		data() {
			return {
				sid:0,
				snickname:'',
				editing: false,
				editing2: false,
				loginForm: {
					username: '',
					password: ''
				},
				registerForm: {
					username: '',
					password: '',
					nickname: ''
				}
			}
		},
		methods: {
			
			  login() {
			    if (this.loginForm.password == '' || this.loginForm.username == '') {
			      alert("请输入用户或密码");
			    } else {
			      druser(this.loginForm).then((res) => {
			        if (res.statusCode == 401) {
			          alert('账户或密码错误!');
			        }
			        if (res.data.id != null) {
			          this.editing2 = true;
			          alert('登录成功');
			          this.sid = res.data.id;
			          this.snickname = res.data.nickname;
			
			          // 登录成功后跳转到 /pages/index/person.vue 页面
			          this.$router.push('/pages/index/person');
			        }
			      });
			    }
			  }
			,
			register() {
				
					setuser(this.registerForm).then((res) => {
						if (res.statusCode == 400) {
							alert('用户名已存在!');
						};
						if (res.data.id != null) {
							alert("完成注册");
						}
						console.log(res);
					});
				
			},
			registers() {
				if(this.editing != true){
					this.editing = true;
				}else{
					this.editing = false;
				}
				
			},
			tiaozhuanindex(id,nickname) {    //跳转新闻管理
				uni.navigateTo({
					url: '/pages/index/index?id=' + id +'&nickname='+nickname
				});
			},
			tiaozhuanindex2(id,nickname){  //跳转用户管理
				uni.navigateTo({
					url: '/pages/index/user?id=' + id +'&nickname='+nickname
				});
			}
		}
	}
</script>
 
<style>
<style scoped>
.container {
  padding: 0 ;
  margin: 0 ;
 
}
 
label{
	font-family: 'Courier New', Courier, monospace;
	font-size: 30px;
}
.login-form,
0
.register-form {
  display: flex;
  flex-direction: column;
  align-items: center;
  margin: 30px 0;
}
 
.form-group {
  display: flex;
  align-items: center;
  margin-bottom: 20px;
}
 
.form-group label {
  margin-right: 10px;
  font-size: 16px;
}
 
.form-group input {
  height: 30px;
  width: 300px;
  padding: 6px 12px;
  border-radius: 4px;
  border: 1px solid #ccc;
  font-size: 16px;
  outline: none;
}
 
button {
  background-color:skyblue;
  padding: 6px 12px;
  border-radius: 4px;
  border: none;
  font-size: 16px;
  color: black;
  cursor: pointer;
  transition: all 0.2s;
  margin: 10rpx;
}
 
button.login-btn {
  background-color: #007aff;
  margin-right: 10px;
}
 
button.register-btn {
 /* background-color: #555555; */
}
 
button:hover {
  background-color: #8d8dd3;
}
</style>

<template>
  <div>
    <ul>
      <li v-for="(article, index) in pagedArticles" :key="index">
        <h2>{{ article.title }}</h2>
        <h4>{{ article.classify }}</h4>
        <p>{{ article.content }}</p>
        <button @click="editArticle(article)">编辑</button>
        <button @click="deleteArticle(article.id)">删除</button>
      </li>
    </ul>
    <div v-show="numberOfPages > 1" class="pagination">
      <span
        v-for="page in numberOfPages"
        :key="page"
        :class="{ active: currentPage === page }"
        @click="goToPage(page)"
      >{{ page }}</span>
    </div>
  </div>
</template>
 
<script>
import { allxinwen, deletexinwen } from "../../common/api.js";
 
const PAGE_SIZE = 2;
 
export default {
  data() {
    return {
      articles: [],
      currentPage: 1,
    };
  },
  methods: {
    editArticle(article) {
      uni.navigateTo({
        url: '/pages/player/xwbj?id=' + article.id,
      });
    },
    deleteArticle(id) {
      if (confirm("是否确认删除文章?")) {
        deletexinwen(id)
          .then(() => {
            this.loadArticles();
          })
          .catch((error) => {
            console.log(error);
          });
      }
    },
    loadArticles() {
      allxinwen()
        .then((response) => {
          this.articles = response.data;
        })
        .catch((error) => {
          console.log(error);
        });
    },
    paginateArticles(articles, pageSize, pageNumber) {
      const start = (pageNumber - 1) * pageSize;
      const end = start + pageSize;
      return articles.slice(start, end);
    },
    goToPage(page) {
      this.currentPage = page;
    },
  },
  computed: {
    numberOfPages() {
      return Math.ceil(this.articles.length / PAGE_SIZE);
    },
    pagedArticles() {
      return this.paginateArticles(this.articles, PAGE_SIZE, this.currentPage);
    },
  },
  mounted() {
    this.loadArticles();
  },
};
</script>
<style>
.pagination {
  display: flex;
  justify-content: center;
  margin-top: 20px;
}
 
.pagination span {
  display: block;
  padding: 5px 10px;
  border: 1px solid #ddd;
  margin: 0 5px;
  border-radius: 5px;
  cursor: pointer;
}
 
.pagination span.active {
  border-color: #409eff;
  color: #409eff;
}
</style>

<template>
	<view>
		<h1>山寨新闻欢迎您:{{usernickname}}</h1>
		<h3>当前登录的用户ID:{{ userid }}</h3>
		<button type="button" @click="getalluser()">查看全部用户</button>
		<ul>
			<li v-for="item in users" :key="item.id">
				<p>ID: {{ item.id }}</p>
				<p>Username: {{ item.username }}</p>
				<p>Password: {{ item.password }}</p>
				<p>Nickname: {{ item.nickname }}</p>
				<button type="button" @click="postuser2(item)">编辑</button>
				<form v-if="editing">
					<label>编辑用户</label>
					<input type="text" v-model="editingusername" />
					<input type="text" v-model="editingpassword" />
					<input type="text" v-model="editingnackname" />
					<button type="button" @click="postuser3()">确认修改</button>
					<button type="button" @click="deleteuser2(item.id)">删除用户!!!!!</button>
				</form>
			</li>
		</ul>
 
	</view>
</template>
 
<script>
	import {
		alluser,
		postuser,
		deleteUser
	} from "../../common/api.js";
	export default {
		data() {
			return {
				userid: 0,
				usernickname: '',
				editing: false,
 
				users: {},
 
				editingid: '',
				editingnackname: '',
				editingusername: '',
				editingpassword: ''
			}
		},
		onLoad(options) {
			this.userid = options.id;
			this.usernickname = options.nickname;
		},
		methods: {
			//查询全部用户
			getalluser() {
				alluser().then((res) => {
					this.users = res.data;
					// console.log(res.data);
					// alert("完成!")
				});
			},
			//修改用户
			postuser2(item) {
				this.editing = true;
				this.editingid = item.id;
 
				this.editingnackname = item.nickname;
				this.editingusername = item.username;
				this.editingpassword = item.password;
 
			},
			postuser3() {
 
				const data = {
					id: this.editingid,
					nickname: this.editingnackname,
					username: this.editingusername,
					password: this.editingpassword
				};
 
				postuser(data).then((res) => {
					// console.log(res.data);
					alert("修改完成!")
				});
			},
 
			deleteuser2(id) {
				
				deleteUser(id).then((res) => {
					// console.log(res.data);
					alert("删除完成!")
				});
			}
 
		}
	}
</script>
 
<style>
 
</style>
学习总结:
  1. 实践是王道:软件工程是一门实践的学科,理论只是指导实践的工具。要想真正掌握软件工程,必须经常实践,不断提高自己的实践经验和能力。

  2. 注意工程实践:软件工程的最终目的是交付可靠的软件产品,在实际项目中要注意可行性分析、需求分析、设计、编码、测试等各个环节,遵循工程实践标准和规范,确保工程的高质量和效率。

  3. 多看多学:在软件工程领域内,新的技术和方法层出不穷。要想跟上时代的步伐,必须保持持续的学习和探索,多看书、看博客、看论文、看社交网络等等,积极按照自己的兴趣和需求学习和掌握新技术。

  4. 构建自我体系:软件工程是一门高度关联和综合性的学科,它包括很多基础学科和技术领域。要想真正掌握软件工程,建议根据自己的个人兴趣和需求,构建一个较为全面的自我学习体系,组成自己的知识网络。

  5. 持续提高:软件工程是一个不断发展、更新和变革的领域,要想在这个领域持续有新的创意和领先的思路,必须持续更新自己的技术和思想,不断提高自己的能力水平。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值