【个人阅读】软件工程M1/M2阶段总结

      这次作业是好久以前布置的,由于学期末课程设计任务比较重,我在完善M2阶段的代码的同时又忙于数据库的实现和编译器的实现,一度感觉忙得透不过气来。。。。到这些都基本完成的时候,会看自己以前的阅读心得,觉得经过了M1/M2阶段自己第一次接触android代码开发的一无所知到后面通过合作编程以及不断的查找资料和测试代码下,我对结对编程以及软件开发又有了一些个人的理解和建议,正好发现还有一次阅读作业,就顺便我的想法都记下来。。。

      还是从学期开始来说吧,第一次是个人统计词频的项目,这次作业还没有纳入团队编程的范围之中,我感觉应该是准备工作吧。词频统计程序不是很难,所以用基本的语法,很快的完成了代码的编写,调试阶段还是花了一点功夫,主要是之前写的代码冗余太大,篇幅太长,看的时候有点眼花(就1词 2词 3词的检索代码基本都差不多),而且自己写代码的时候分号不对齐,喜欢把简单正确的一部分代码合在一行写。结果当逻辑出现问题的时候(多跳了一次光标)等,感觉看自己的代码越看越恶心。所以从头到尾优化了一下代码风格,把检索写成了一个模块,用正则表达式来进行检索(之前不懂这个概念,因为和同学讨论时同学都说正则表达式好用,我就上网学了挺久时间才弄懂),最后调试运行终于成功了,感觉还可以,不过速度还是有点慢。。。

      结对项目实现电梯调度算法的设计,每个电梯属性都不一样,最初我和同学讨论的时候,设计了一种谁来搭谁的很简便的算法,后面发现这种算法在人少的时候比较合理,但是在人多的极端情况下,比入300人一起在1楼等的情况,这个算法还没有傻瓜调度快,所以后面我们综合了几种极端情况结合助教的代码终于设计出了一个比较合理的算法,拿了50分。

      之后就来到了M1阶段,由于黄金点游戏的排名比较靠后,我们是作为自选题目小组选择了开发一个android运用。我分配的任务是实现一个底层页面的设计,展示出一道菜的制作过程。对于android,之前没有一点基础,所以我也特地花时间在android页面开发的学习上。但是在实现的时候也遇到额很多问题,第2周和第三周的时间我都在上网或者问同学来解决这些问题,开始对于json数组及json的分析提取及封装等过程比较迷茫,和队长讨论的时候,队长建议我去网上找一个关于json解析运用的实例代码去看一下会比较好。我同意这个看法,就去网上随便找了个(真的是随便找的么。。)结果看了个逼格比较高的代码,看了半天硬是没看懂,就老老实实去图书馆借了本开发实例结合语法学习才一步一步知道。之后在页面布局的设计阶段,我使用listiew的时候发现listview套用图片文字会使图片显示不出来,看来了半天也不知道为何(其实很多时候我都觉得一些错误我怎么看都看不懂。。包括解释。。),后面查询资料才知道,得改写其中的方法,弄了半天才把基础的M1版本写完。。感觉虽然很累但是真正学到了很多有用的东西。

      M2阶段,由于各种课程设计的压力,我一度忽略了软工作业。。。不过对于团队作业,自己的部分还是应该在规定的时间内要完成对应的目标,不然会影响进度和队长的工作,所以在M1的基础上我明确了自己的目标,花了一下午和队长讨论了界面的优化方案,最后确定后我有通过对页面结构的学习为listiew添加了headeview以及一些相对布局的实现,顺利完成了要求。

      虽然自己的工作是完成了,但是得到的成绩并不理想,我简单的回顾了一下自己的开发代码以及之前阅读作业的感想,发现了几个比较大的问题。

      1.对于自己的代码,我们不止应该去完成它,还要想办法去找它的bug并解决它,对于M1/M2阶段的开发,我是鉴于学习的基础上做出来的,原则上还有很多可以优化的地方,在测试阶段对软件的使用时我们也发现关于我页面的一些问题,如果在自己完成代码优化时多考虑一些问题,就能避免这样的尴尬,也能加快团队的开发进度。。。

      2. 在阅读作业中我也明白了团队项目的开发最重要的不仅仅是个人部分的开发的晚上,更重要的事团队之间协商的代码的连接架构以及全局解决方案和各种情况下软件实现方面问题引申到每个人的代码的问题,要写好团队项目,就必须及时和正确的和队员沟通,无论是困难的解决以及接口的规范或者是代码连结的调试,都能及时发现问题,提高效率。

      在自己的开发阶段,我曾经想通过自学自己干来“独立”完成代码编写,事实发现这样的想法是不成熟的。遇到的问题应该多多结合和队员的交流讨论,并且在代码功能及结构的设计层次上,自己在设计时由于没有和队长进行完全的沟通,导致开发时的接口以及参数引用不正确,自讨苦吃。。

      不过,自己也在后两次阶段实现时收获了很多的感悟

       首先,1+1>2,在我实现json的解析与展示的时候遇到的问题在和相关开发任务的同学经过交流,一起解决困难,这样比两个人分开解决好多了,并且我们也互相借鉴了对方的开发方法和部分开发风格,都得到了代码的优化。

      由于自己的组织能力不是很强,所以没有选择当队长,后面我认为,队长不仅要负责协商团队编程的进度,也得承担代码连结方面的工作,强度可见一斑。。。对于每一位队员来说,应该服从队长的安排,最规定的时间完成目标,有什么结构问题优先找队长协商,而不是找其他队员私下决定。我在和队长交谈算法和处理问题的时候也交流了许多界面以及功能结构方面的知识,也渐渐对自己的部分有了全局的理解,这对于自己的开发也大有好处。

      对于代码强度来说,我觉得还吃得消,虽然之前没有接触,在实现代码的时候在优化算法方面以及功能设计方面也会有很多的不足,但是至少前面的空白自己都硬着头皮一点一点学来了,后面的高级部分我们也应该抱有信心和热情,努力克服困难。

      关于个人的建议,其实我不太建议选学长代码的完善,我更倾向于选一个新的问题从头做起,这样我能够从头到尾经历一次比较完整的开发过程,才能真正体会到团队项目的特点和交流,整合以及优化测试的重要性,这样也让我认识到了大工程不仅仅要重视算法,更要重视架构上和变化上对软件目标实现的综合整合。

       唯一很遗憾的就是,对于《构建之法》的理解不是很深入,其实软工的东西基本都是从这本书上整合来的。。遗憾自己没时间更加深入android开发的一些优化算法,对自己的页面不太满意,对其他的大作业花了比较多的心思,软工没有投入更多的时间去做也是自己的问题。。。

      此时我又想到编译老师和计组老师说过,大作业虽然会累得让你喘不过气,但是你付出的越多,收获的也会越多,所以我们也没有必要去抱怨什么,软工也是如此,团队的工程,多学多实践,多多交流,寻找好的方法和途径,从头开始虽然很痛苦,但是我也学到了团队开发的基本过程,如何去解决问题(问同学,上网差书籍,学习别人的代码也是一种很好的方式,但也要找一个比较合适的代码。。),总能写出点什么好东西来的!

       之前阅读博客链接

       http://www.cnblogs.com/12061174lj/p/4027885.html

       http://www.cnblogs.com/12061174lj/p/4072310.html

转载于:https://www.cnblogs.com/12061174lj/p/4213789.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/290015.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Excel实用函数大全(名称、功能、说明、用法、举例)

我们在使用Excel制作表格整理数据的时候,常常要用到它的函数功能来自动统计处理表格中的数据。这里整理了Excel中使用频率最高的函数的功能、使用方法,以及这些函数在实际应用中的实例剖析,并配有详细的介绍。 1、ABS函数    函数名称:ABS    主要功能:求出相应数字…

DB2 SQL 递归实现多行合并

最终效果 原始数据: 转换脚本: WITH post_a AS ( SELECT DISTINCT T.EMP_NO,S.CODE_ FROM inscndb.DTFMA000_EMP_POST T ,VIEW_BI_POST S WHERE T.POST||-||POST2 S.POST ), post_b AS (SELECT emp_no,code_,ROW_NUMBER() OVER(PARTITION BY EMP_NO ORD…

C++之greater和less

1、greater、 less 他在头文件<functional>里面, greater和less都重载了操作符 定义如下: // TEMPLATE STRUCT greater template<class _Ty> struct greater : public binary_function<_Ty, _Ty, bool> { // functor for operator>bool operator()(cons…

mysql逻辑结构设计_数据库设计:逻辑结构设计

概念结构设计所得的E-R模型是对用户需求的一种抽象的表达形式&#xff0c;它独立于任何一种具体的数据模型&#xff0c;因而也不能为任何一个具体的DBMS所支持。为了能够建立起最终的物理系统&#xff0c;还需要将概念结构进一步转化为某一DBMS所支持的数据模型&#xff0c;然后…

.NET6之MiniAPI(二十五):Dapper

注&#xff1a;如果你使用Dapper一段时间了&#xff0c;这篇你可以跳过去了。在第十二篇中&#xff0c;我们聊过官方的ORM——EntityFramework&#xff0c;它可以把SQL细节都隐藏&#xff0c;这对于一些标准化的关系数据库项目非常便捷。今天&#xff0c;介绍另外一个流行的ORM…

移动端web开发整理

/* 移动端定义字体的代码 */body {   font-family: "Helvetica Neue", Helvetica; } ios端触摸时&#xff0c;会出现一个半透明灰色遮罩  如果想要禁用&#xff0c;可设置-webkit-tap-highlight-color的alpha值为0 body{-webkit-tap-highlight-color: rgba(0,0,…

LeetCode Implement Queue using Stacks (数据结构)

题意&#xff1a; 用栈来实现队列。 思路&#xff1a; 一个栈是不够的&#xff0c;至少要两个。 &#xff08;1&#xff09;插入。永远只插入到stack1中&#xff08;插到栈顶&#xff09;。 &#xff08;2&#xff09;弹出。如果stack2不为空&#xff0c;直接弹出stack2的栈顶&…

C++之STL之priority_queue

1、priority_queue介绍 priority_queue 是优先队列 模板声明带有三个参数,priority_queue<Type, Container, Functional> Type为数据类型,Container为保存数据的容器,Functional为元素比较方式 Container必须是用数组实现的容器,如 vector, deque不能用list, STL里面…

直角三角形知道两边求角度_每日一讲:解直角三角形(3.21)

考点一、直角三角形的性质 1、直角三角形的两个锐角互余&#xff1a;可表示如下&#xff1a;∠C90∠A∠B902、在直角三角形中&#xff0c;30角所对的直角边等于斜边的一半。3、直角三角形斜边上的中线等于斜边的一半4、勾股定理&#xff1a; 如果直角三角形的两直角边长分别为…

用VBA得到EXCEL表格中的行数和列数

用VBA得到EXCEL表格中的行数和列数 每种方法中上面的是Excel的行数&#xff0c;下面的是Excel的列数。 方法1: ActiveSheet.UsedRange.Rows.Count ActiveSheet.UsedRange.Columns.Count 缺点&#xff1a;有时可能会比实际数大一些&#xff0c;原因是如果你把最后几行&#xff0…

Javascript屏蔽鼠标的右键的两种方法。

方法一&#xff1a;利用鼠标button的键值 <script language"javascript">function blockright(oEvent) {var oDiv document.getElementById("display");if (window.event) oEvent window.event; //处理兼容性&#xff0c;获得事件对象if (oEvent.b…

Blazor University (4)组件 — 单向绑定

原文链接&#xff1a;https://blazor-university.com/components/one-way-binding/单向绑定源代码[1]此时我们在页面内显示了一个组件&#xff0c;但内容是静态的。我们真正想要的是能够动态输出内容。如果我们更改 /Components/MyFirstComponent.razor 的内容&#xff0c;我们…

Java Web项目开发流程

2019独角兽企业重金招聘Python工程师标准>>> 1.Web项目开发流程图解 2.Web项目开发的细节&#xff08;转载&#xff09; 任何一个项目或者系统开发之前都需要定制一个开发约定和规则&#xff0c;这样有利于项目的整体风格统一、代码维护和扩展。由于Web项目开发的分…

OpenGL中shader使用

引自&#xff1a;http://blog.csdn.net/wl_soft50/article/details/7916720 http://blog.sina.com.cn/s/blog_923fdd9b0102vbe0.html 与OpenGL ES1.x渲染管线相比&#xff0c;OpenGL ES 2.0渲染管线中“顶点着色器”取代了OpenGL ES 1.x渲染管线中的“变换和光照”&#xff1b;…

mysql输出代码_mysql常用代码

1、mysql导出和导入导入&#xff1a;mysql -uroot -p --default-character-setutf8 数据库名 < 数据SQL文件导出&#xff1a;mysqldump --opt -R -E -u root --password1234 数据库名 > 数据SQL文件.sql2、检查某表字段是否有NULLset dbname库名,tbname表名;select con…

贪心算法之最短路径问题(Dijkstra算法)

1、问题 一个求单源最短路径的问题。给定有向带权图 G =(V, E ), 其中每条边的权是非负实数。此外,给定 V 中的一个顶点, 称为源点。现在要计算从源到所有其他各顶点的最短路径长 度,这里路径长度指路上各边的权之和。 2、分析 3、代码实现 1、普通C++实现 #include &l…

【ArcGIS风暴】ArcGIS获取线段上等间距的点

题目&#xff1a;现需要沿某条道路等间距安装路灯&#xff0c;请给出路灯点的位置及其坐标 实现思路&#xff1a; 一、数字化道路&#xff0c;获取Road线状矢量数据&#xff08;如shapefile文件&#xff09;。 二、在开始编辑状态下&#xff0c;执行Divide命令&#xff0c;按…

Centos实现svn本地认证apache认证

本文系统&#xff1a;Centos6.5_x64 本地lamp环境 ip:192.168.184.129一、搭建svn&#xff0c;实现svn方式访问、本地用户认证二、实现http方式访问、apache本地文件认证subversion目录说明&#xff1a;*dav目录&#xff1a;是提供apache与mod_dav_svn使用的目录&#xff0c;让…

ASP.NET Core 6.0对热重载的支持

.NET 热重载技术支持将代码更改&#xff08;包括对样式表的更改&#xff09;实时应用到正在运行的程序中&#xff0c;不需要重启应用&#xff0c;也不会丢失应用状态。一、整体介绍目前 ASP.NET Core 6.0 项目都支持热重载。在以下情况下支持应用的热重载&#xff1a;1. 仅运行…

std::bind 详解及参数解析

// Bind_std_function.cpp : 定义控制台应用程序的入口点。 //#include "stdafx.h" #include <iostream> #include <functional> #include <random> #include <memory> //学习bind的用法 void f(int n1, int n2, int n3, const int & n4…