转自:>
Js给初学者的印象总是那么的“杂而乱”,相信很多初学者都在找轻松学习Js的途径。在这里给大家总结一些学习Js的经验,希望能给后来的学习者探索出一条“轻松学习Js之路”。
Js给人那种感觉的原因多半是因为它如下的特点:
A:本身知识很抽象、晦涩难懂,如:闭包、内置对象、DOM。
B:本身内容很多,如函数库、对象库就一大堆。
C:混合多种编程思想。它里面不但牵涉面向过程编程思想,又有面向对象编程思想,同时,它的面向对象还和别的编程语言(如:C++,JAVA,PHP)不大一样。就好像又是新的一样,让你对曾经学的面向对象产生了怀疑
D:辛苦学习后又看似和实际应用脱节。通常学了很久的js基础之后,变量、函数、对象你也都略知一二,但一到公司开发项目的时候,却又难以下手。因为公司在开发实际项目的时候通常都是直接用它的衍生库,如:jquery,angular,boostrap,amaze,layui,ueditor等,而这些库又多如牛毛,同时还有自己的难点。让你都不知道该学哪个好,甚至都怀疑自己学的是不是js了,好像有多个版本的js一样,总是学不完
那么,怎么才能在js领域内学的轻松甚至游刃有余呢?我总结了一些实战意义的js学习经验:
1首先要紧紧抓住它的地位
时刻都不能忘记,否则很容易犯“一叶障目不见泰山”的错误。不要学了很久就知道js是编程语言,就是写代码,而且特点就是乱七八糟就完了,那样是学不好js的。要时时抓住它的地位,确切的说是它在整个Web中的地位:它属于前端的核心,主要用来 *** 控和重新调整DOM,通过修改DOM结构,从而来达到修改页面效果的目的。要用这个中心思想去指导后续的一切js的学习,并且形成条件反射。
2要有一条清晰的学习路线
这个只能是过来人给你提供参考了。我的学习路线如下:
A:js基础部分,如:定义变量、函数、数组、字符串等的处理,内置函数、内置对象等;
B:js面向过程编程思想,封装出各个函数,试着用这些去做一些常见的小功能,如:选项卡、自定义多选按钮、自定义播放器、3D幻灯片;
C:js面向对象编程思想,试着去封装一些你自己的对象,提供出有意义的接口出来;
D:学了上述的内容,然后学常用的库,这里必须学jquery;
E:学基于jquery之上的常见插件,如:bootstrap,Layer,富文本编辑器等;
F:综合应用上面的多种库写实际项目的模板,多写几套。
3从多角度去学习和领悟
充分调动你所学的东西,从多角度去做某一功能,如:以前你是从面向过程角度做的,现在改为从面向对象的角度再来做,或者继续做成可以直接使用的插件,提供属性、方法等出来。争取让你做的这个功能逐渐能使用到实际项目中来。这样的好处:既综合应用了你的所学,又能有实际意义。
4注意培养信心
此时的你,不适合一来就看很复杂很炫的网页效果的源代码,也不适合一来就学jquery,angular,vue,bootstrap这些东西。这些内容包含了很多深奥的知识在里面,在没有任何基础的情况下直接学这些,会严重打击你的自信心。而此时你是弱小的,你需要的是培养信心,而不是反过来,否则结局很可能是“夭折”,离学有所成也就遥遥无期了。
5 多写总结
这种总结不但包括源代码、显示效果截图,还应该很容易犯的错误和对应的解决方法以及最后一两句精简的结论性语句。对自己写的总结不是写完了就了事了,要多回顾、多改进、多精简。到做项目的时候,应该是看里面的一两句话就知道是讲什么了,而不要再去看长篇大论了。
6构建知识导图
这个可以让你越学越清晰,你可以按你喜欢的任何形式去做,只要自己印象深刻就行。
注意:知识导图也应该是经常修改、修正,让它更合理、更清晰。
以下是总结的js的知识导图,能够认真看完就是一次对 JavaScript 的回顾与提升,可以很好的检验基础。
JavaScript变量
JavaScript 运算符
JavaScript 数组
JavaScript 流程语句
JavaScript 字符串函数
JavaScript 函数基础
JavaScript 基础 DOM *** 作
DOM 对象
BOM 浏览器对象模型
JavaScript 正则表达
是的,没有高深的知识,没有进阶的技巧。
只是,万丈高楼平地起;只是,千里之行始于足下;只是,千里长提溃于蚁穴。
能把简单的做好就是不简单,你能走多远,不是在于你有多聪明,而是取决于你有多勤奋,共勉。
JSP学习路线图
JSP教程
在这里,我们将提供一个聊天室的简单的JSP程序。我们的程序是按照JSP
Model
2的规范来实现的。简而言之,就是我们将绝大多数处理用户请求的任务交给Servlet来执行,而我们的JSP仅仅是用来完成显示。
在阅读我们的程序之前,你最好已经具备了Java和JSP的基础知识,但是如果你对Java和JSP不是太熟悉,你也可以直接阅读我们的程序,对于每一项涉及到Java和JSP的内容,在我们的程序中第一次出现时,我们会作简要的说明。
当然,你还是需要阅读其他的相关教程,因为我们的这篇文章毕竟不是一个教程。
此外,我们的聊天室是挂接在另一个应用系统上的,对于其中一些特殊的命令方法,你可以不必太介意。
我有源代码:绝对可以通过,不过比较简单而已,对学生而言应该可以了吧,这是以前写的:
一下两个文件放在一个包里就行了
/
This class defines a class that contains some useful
attributions and some methods to set or get these attributions
/
import javaxswingJButton;
public class ExButton extends JButton
{
//if the button is a mine,the isMine will be true
private boolean isMine;
//to check if a button has been visited is useful
//when using the recursion in the Game class
private boolean isVisited;
//the row number of the button
int btnRowNumber;
//the column number of the button
int btnColumnNumber;
//the mines around a button
int minesAround=0;
public void setIndex(int btnRowNumber,int btnColumnNumber)
{
thisbtnRowNumber=btnRowNumber;
thisbtnColumnNumber=btnColumnNumber;
}
public int getRowNumber()
{
return thisbtnRowNumber;
}
public int getColumnNumber()
{
return thisbtnColumnNumber;
}
public void setVisited(boolean isVisited)
{
thisisVisited=isVisited;
}
public boolean getVisited()
{
return thisisVisited;
}
public void setMine(boolean isMine)
{
thisisMine=isMine;
}
public boolean getMine()
{
return thisisMine;
}
//the attribute of minesAround add one each
//time a mine is put down around the button
public void addMinesAround()
{
thisminesAround++;
}
public int getMinesAround()
{
return thisminesAround;
}
}
-------------------------------------------------
/
File Name: Gamejava
Author: Tian Wei Student Number: Email: xiangchensuiyue@163com
Assignment number: #4
Description: In this program ,a frame will be created which contains
ten "mines"When you click a button ,it will present the
number of mines around or a message of losing the game
(if the button is a mine)You can make a right click to
sign a dengerous button as wellWhen all the mines have
been signed ,a message box of winning the game will jump
to the screenAnd the the message of the time you used in
the gameMore over,you can click the button on the bottom
to restart the game
/
import javaxswing;
import javaawt;
import javaawtevent;
import javautil;
import javautilRandom;
import javautilTimer;
public class Game extends JFrame{
//define some menber variables
private long minute=0,second=0;//take down time used int the game
private ExButton[][] btn;//two-dimension array present the buttons
private JLabel label;
private JButton restart;//restart button
private int minesRemained;//remained mines that you have not signed
private boolean thisTry=true;
private JLabel timeUsed=new JLabel ();
private Random rand=new Random();
private final int ROWS,COLUMNS;
private final int MINES;
// the constuctor
public Game(int rows,int columns,int mines)
{
super("Find mines");
thisROWS=rows;
thisCOLUMNS=columns;
thisMINES=mines;
minesRemained=MINES;
Timer timer=new Timer();//Timer's object to timer the game
timerschedule(new MyTimer(), 0, 1000);//do the function every second
Container container=getContentPane();
containersetLayout(new BorderLayout());
//Jpanel in the Container
JPanel jpanel=new JPanel();
jpanelsetLayout(new GridLayout(ROWS,COLUMNS));
restart=new JButton("click me to restart the game");
JPanel jpanel2=new JPanel();
//Another JPanel in the Container
jpanel2setLayout(new FlowLayout());
jpanel2add(timeUsed);
jpanel2add(restart);
ButtonListener restartHandler=new ButtonListener();
restartaddActionListener(restartHandler);
containeradd(jpanel2,BorderLayoutSOUTH);
btn=new ExButton[ROWS+2][COLUMNS+2];
//initialize the buttons
for(int i=0;i<=ROWS+1;i++)
{
for(int j=0;j<=COLUMNS+1;j++)
{
btn[i][j]=new ExButton();
btn[i][j]addMouseListener(new MouseClickHandler());
btn[i][j]setIndex(i,j);
btn[i][j]setVisited(false);
}
}
for(int i=1;i<=ROWS;i++)
for(int j=1;j<=COLUMNS;j++)
jpaneladd(btn[i][j]);
containeradd(jpanel,BorderLayoutCENTER);
JPanel jpanel3=new JPanel ();
label=new JLabel();
labelsetText("Mines remaining "+MINES);
jpanel3add(label);
containeradd(jpanel3,BorderLayoutNORTH );
thisaddMines();
thisaddMinesAround();
}
//randomly put ten mines
private void addMines()
{
for(int i=1;i<=MINES;i++)
{
int raInt1=randnextInt(ROWS);
int raInt2=randnextInt(COLUMNS);
if((raInt1==0)||(raInt2==0)||btn[raInt1][raInt2]getMine())
i--;
else
btn[raInt1][raInt2]setMine(true);
}
}
//take down the mines around a button
private void addMinesAround()
{
for(int i=1;i<=ROWS;i++)
{
for(int j=1;j<=COLUMNS;j++)
{
if(btn[i][j]getMine())
{
btn[i][j-1]addMinesAround();
btn[i][j+1]addMinesAround();
btn[i-1][j-1]addMinesAround();
btn[i-1][j]addMinesAround();
btn[i-1][j+1]addMinesAround();
btn[i+1][j-1]addMinesAround();
btn[i+1][j]addMinesAround();
btn[i+1][j+1]addMinesAround();
}
}
}
}
//if a button clicked is a empty one,then use a recursion
//to find all the empty buttons around
private void checkEmpty(ExButton button)
{
buttonsetVisited(true);
int x=buttongetRowNumber();
int y=buttongetColumnNumber();
buttonsetBackground(Colorwhite);
if((buttongetMinesAround()==0)&&(x>=1)&&(x<=ROWS)
&&(y>=1)&&(y<=COLUMNS))
{
if(!btn[x][y-1]getVisited())
checkEmpty(btn[x][y-1]);
if(!btn[x][y+1]getVisited())
checkEmpty(btn[x][y+1]);
if(!btn[x-1][y]getVisited())
checkEmpty(btn[x-1][y]);
if(!btn[x+1][y]getVisited())
checkEmpty(btn[x+1][y]);
if(!btn[x-1][y-1]getVisited())
checkEmpty(btn[x-1][y-1]);
if(!btn[x-1][y+1]getVisited())
checkEmpty(btn[x-1][y+1]);
if(!btn[x+1][y-1]getVisited())
checkEmpty(btn[x+1][y-1]);
if(!btn[x+1][y+1]getVisited())
checkEmpty(btn[x+1][y+1]);
}
else if(buttongetMinesAround()>0)
buttonsetText(""+buttongetMinesAround());
}
//the main function
public static void main(String args[])
{
String rows,columns,mines;
int rowNumber,columnNumber,mineNumber;
rows=JOptionPaneshowInputDialog("Enter the rows of the game");
columns=JOptionPaneshowInputDialog("Enter the columns of the game");
mines=JOptionPaneshowInputDialog("Enter the mines of the game");
rowNumber=IntegerparseInt(rows);
columnNumber=IntegerparseInt(columns);
mineNumber=IntegerparseInt(mines);
Game frame=new Game(rowNumber,columnNumber,mineNumber);
framesetTitle("Find Mines");
framesetDefaultCloseOperation(JFrameEXIT_ON_CLOSE);
framesetLocation(220, 80);
framesetSize(600, 600 );
framesetVisible(true);
}
//there are three inner class below
//The first inner class is used to do the mouse listener's
//functionWhen you click a button ,it will present the
//number of mines around or a message of losing the game
//(if the button is a mine)You can make a right click to
//sign a dengerous button as wellWhen ten mines have been
//signed,it will check whether all the signed ones are mines
private class MouseClickHandler extends MouseAdapter
{
public void mouseClicked(MouseEvent event)
{
//get the button that been clicked
ExButton eventButton=new ExButton();
eventButton=(ExButton)eventgetSource();
eventButtonsetVisited(true);
//when it is a right click
if(eventisMetaDown())
{
if(eventButtongetText()=="#")
{
minesRemained++;
eventButtonsetText("");
}
else
{
if((eventButtongetBackground()==Colorwhite)||
(eventButtongetText()!=""))
{
//do nothing
}
else
{
minesRemained--;
eventButtonsetText("#");
}
}
labelsetText("Mines remaining "+minesRemained);
//check if all the signed buttons are mines
if(minesRemained==0)
{
for(int i=1;i<=ROWS;i++)
for(int j=1;j<=COLUMNS;j++)
{
if(btn[i][j]getMine()&&btn[i][j]getText()!="#")
thisTry=false;
if(!btn[i][j]getMine()&&btn[i][j]getText()=="#")
thisTry=false;
}
if(thisTry)
{
//win the game
JOptionPaneshowMessageDialog(null, "You succeed" +
" in this experience!");
JOptionPaneshowMessageDialog(null, "Time used:"+
timeUsedgetText());
}
else//you have wrongly signed one or more mines
JOptionPaneshowMessageDialog(null, "You have wrongly " +
"signed one or more mines,please check it and go on!");
}
}
else if(eventisAltDown())
{
//do nothing
}
else
{//normally click(left click)
if(eventButtongetText()=="#")
{
//do nothing
}
else if(eventButtongetMine())
{
//lose the game
JOptionPaneshowMessageDialog(null, "What a pity!" +
"You failed!" );
//show all the mines to the loser
for(int i=1;i<=ROWS;i++)
for(int j=1;j<=COLUMNS;j++)
{
if(btn[i][j]getMine())
btn[i][j]setBackground(ColorBLACK);
}
JOptionPaneshowMessageDialog(null, "Time used: 0"+
minute+":"+second);
}
else
{
if(eventButtongetMinesAround()==0)
{
//call the function to find all the empty buttons around
checkEmpty(eventButton);
}
else
eventButtonsetText(""+eventButtongetMinesAround());
}
}
}
}
//The second class is to listen to the button which used to
//restart the gameIn this class,it will dispose the old frame
//and create a new one(Of course,the mines's position have
//been changed)
private class ButtonListener implements ActionListener
{
public void actionPerformed (ActionEvent e)
{
//what to dispose is the object of Game class
Gamethisdispose();
//the same code as in the main function
Game frame=new Game(ROWS,COLUMNS,MINES);
framesetTitle("Find Mines");
framesetDefaultCloseOperation(JFrameEXIT_ON_CLOSE);
framesetSize(600, 600 );
//make sure the frame is at the center of the screen
framesetLocation(220, 80);
framesetVisible(true);
}
}
//The last class is the class that will be used in the
//Timer's object timerIt should inherit the class TimerTask
//It is the task that the Timer will do every second
private class MyTimer extends TimerTask
{
public void run()
{
second+=1;
minute+=second/60;
second=second%60;
//change the text of the time used in the game
timeUsedsetText("Time used 0"+minute+":"+second);
}
}
}//end of the class Game
软件工程心得优秀6篇
软件工程心得要怎么写,才更标准规范?根据多年的文秘写作经验,参考优秀的软件工程心得样本能让你事半功倍,下面分享软件工程心得优秀6篇,供你选择借鉴。
软件工程心得篇1
转眼之间,两个月的实习期即将结束,回顾这两个月的实习工作,感触很深,收获颇丰。这两个月,在领导和同事们的悉心关怀和指导下,通过我自身的不懈努力,我学到了人生难得的工作经验和社会见识。我将从以下几个方面总结软件工程岗位工作实习这段时间自己体会和心得:
一、努力学习,理论结合实践,不断提高自身工作能力。
在软件工程岗位工作的实习过程中,我始终把学习作为获得新知识、掌握方法、提高能力、解决问题的一条重要途径和方法,切实做到用理论武装头脑、指导实践、推动工作。思想上积极进取,积极的把自己现有的知识用于社会实践中,在实践中也才能检验知识的有用性。在这两个月的实习工作中给我最大的感触就是:我们在学校学到了很多的理论知识,但很少用于社会实践中,这样理论和实践就大大的脱节了,以至于在以后的学习和生活中找不到方向,无法学以致用。同时,在工作中不断的学习也是弥补自己的不足的有效方式。信息时代,瞬息万变,社会在变化,人也在变化,所以你一天不学习,你就会落伍。通过这两个月的实习,并结合软件工程岗位工作的实际情况,认真学习的软件工程岗位工作各项政策制度、管理制度和工作条例,使工作中的困难有了最有力地解决武器。通过这些工作条例的学习使我进一步加深了对各项工作的理解,可以求真务实的开展各项工作。
二、围绕工作,突出重点,尽心尽力履行职责。
在软件工程岗位工作中我都本着认真负责的态度去对待每项工作。虽然开始由于经验不足和认识不够,觉得在软件工程岗位工作中找不到事情做,不能得到锻炼的目的,但我迅速从自身出发寻找原因,和同事交流,认识到自己的不足,以至于迅速的转变自己的角色和工作定位。为使自己尽快熟悉工作,进入角色,我一方面抓紧时间查看相关资料,熟悉自己的工作职责,另一方面我虚心向领导、同事请教使自己对软件工程岗位工作的情况有了一个比较系统、全面的认知和了解。根据软件工程岗位工作的实际情况,结合自身的优势,把握工作的重点和难点, 尽心尽力完成软件工程岗位工作的任务。两个月的实习工作,我经常得到了同事的好评和领导的赞许。
三、转变角色,以极大的热情投入到工作中。
从大学校门跨入到软件工程岗位工作岗位,一开始我难以适应角色的转变,不能发现问题,从而解决问题,认为没有多少事情可以做,我就有一点失望,开始的热情有点消退,完全找不到方向。但我还是尽量保持当初的那份热情,想干有用的事的态度,不断的做好一些杂事,同时也勇于协助同事做好各项工作,慢慢的就找到了自己的角色,明白自己该干什么,这就是一个热情的问题,只要我保持极大的热情,相信自己一定会得到认可,没有不会做,没有做不好,只有你愿不愿意做。转变自己的角色,从一位学生到一位工作人员的转变,不仅仅是角色的变化,更是思想观念的转变。
四、发扬团队精神,在完成本职工作的同时协同其他同事。
在工作间能得到领导的充分信任,并在按时完成上级分配给我的各项工作的同时,还能积极主动地协助其他同事处理一些内务工作。个人的能力只有融入团队,才能实现最大的价值。实习期的工作,让我充分认识到团队精神的重要性。
团队的精髓是共同进步。没有共同进步,相互合作,团队如同一盘散沙。相互合作,团队就会齐心协力,成为一个强有力的集体。很多人经常把团队和工作团体混为一谈,其实两者之间存在本质上的区别。优秀的工作团体与团队一样,具有能够一起分享信息、观点和创意,共同决策以帮助每个成员能够更好地工作,同时强化个人工作标准的特点。但工作团体主要是把工作目标分解到个人,其本质上是注重个人目标和责任,工作团体目标只是个人目标的简单总和,工作团体的成员不会为超出自己义务范围的结果负责,也不会尝试那种因为多名成员共同工作而带来的增值效应。
五、存在的问题。
几个月来,我虽然努力做了一些工作,但距离领导的要求还有不小差距,如理论水平、工作能力上还有待进一步提高,对软件工程岗位工作岗位还不够熟悉等等,这些问题,我决心实习报告在今后的工作和学习中努力加以改进和解决,使自己更好地做好本职工作。
软件工程心得篇2
时间飞逝,不知不觉间《软件工程》的学习已经过了大半了。在这将近半学期的学习中,虽然我不能说我将《软件工程》学习的有多么的好,但是通过学习,我还是受益良多。
在以前,我一直对软件存在一些偏见或则是误解,认为软件就是程序,软件的开发就是编写程序,只要编完了程序,一切也就ok了,而且我还片面的认为只要我掌握了时下最新的语言和工具,那么我就能写程序了。一个人,只要会编程,就能写软件,就是程序员;一个公司,只要招聘一些程序员,就能开发好的软件产品。只要有几个有经验的程序员,再找些兼职的大学生,就能组成一个软件公司。
但是通过了《软件工程》这门课的学习,使我认识到了我以前的错误。软件其实不仅仅是程序,软件开发其实也不仅仅是编写程序,软件是思想在硬件上的载体和体现,处理的是逻辑和信息。唯有对软件和软件的开发过程,有充分的认识,才能更好的开发出,过程受控、质量受控的软件产品。
而且在以前,我一直以为软件的开发其实是一件很轻松快乐的事情,只要一天坐在电脑旁敲敲键盘,那么一切就可以了,但是现在我才发现,我以前的很多的思想是多么的肤浅可笑。编程其实是一种乐趣和苦恼共存的一项创造性活动。因为编程不仅能够满足我们内心深处进行创造的渴望,而且还能愉悦我们内在的情感。
而且通过学习《软件工程》,我还学到了很多其他的东西。比如通过学习《软件工程》,特别是老师每次用实际的软件现场的讲解,为我提供了一个尽早接触世界工作和真实项目的机会。让我知道如何在以最小的成本中,训练自己的基本工程素质和能力,如何激发自己的积极性等。而且通过学习《软件工程》,还让我认识和培养了我的团队协作能力,特别是对于我们这些在校的学生来说,这种学习更是能让我在以后工作中少走很多的弯路。
所以,通过《软件工程》的学习,我是真的学习到了很多有用的东西,让我明白了很多的道理。在此我对老师的辛勤教育表示感谢,因为是你让我学习到了这些,是我获益良多。
软件工程心得篇3
时间过的很快,转眼间已经实习将近5个月,其中有2个月是属于完全被流放的。 最先在内部系统组参与内部管理系统开发(struts+mysql+spring+hibernate),之后是去做网络交换机软件的脚本测试。现在又回归内部系统,虽然在脚本组期间,编码能力被别人甩在后头,但至少具有了一些测试经验。
至少自己做的东西,是真正交付到了客户手上,到也稍微有些成就感。
1、浅谈测试
一直以来,我都认为测试是脱离了软件工程范围的工作,不以为屑。但在实际情况中,测试是既重要且难以精湛的其真正的压力,在于找不到bug,责任在你,而不在于编码人员。一般的测试人员不懂编码,他们靠的是日以累计的经验总结和想象力。而要做到高级测试工程师,则一定要懂编码,因为这是你完全掌握整个系统的方方面面具体运作的前提。但占主导地位的,还是大型系统的集成测试经验。实际项目中,编码时间一般只占30%左右,真正耗费时间的是IT阶段的找 bug与对应bug,此阶段基本评定了coder的编码质量。
2、程序员的困惑
有些人,以为教学视频和代码看多,自己就懂的多,实际做起来,却不知从何下手,问题在那如何定位如何解决通通跟一样能力有关,debug追踪能力,也称调试。在项目组工作不愁源码资源,但问题是蛋糕摆在面前,你如何去消化
有位同事告诉我:代码看几遍都没用,要去抄,例如一个查询模块,在此基础上去做具体记录的历史记录查询模块,你可能会觉得很简单,但实际情况却往往报一堆异常,配置问题涉及到方方面面,以及数据库字段,传值问题等等,一大堆对于新人来说很郁闷的问题。但不用怕,只要学会调试,一个个问题去追踪,一个个去解决,自然而然,那段“源码”才真正属于你。
3、如何调试追踪
如果你能在短短的时间内就看到问题点在那,放下断点去追踪,出去找工作,绝对没问题。出现问题的时候,不要光看代码,要用实际行动去追踪运行期间的具体值,那是最好途径。eclipse是个很爽的ide,这点做的很好。例如页面内容显示不是自己想要的数据,我们要先从数据库查询语句去下手,设置断点,一步一步step over,让sql字段(存取最终sql语句的字符串)运行到有值,inspect进去看,如果还看不出来,就点击它,copy后在sql客户端去实际运行,看看实际查询出来的表是什么,如果是对的,有可能就是页面调用的错误或者action逻辑的传值问题。
页面错误的调试,基本方法是用右键点击实际网页查看源代码,copy到editplus,就能看到具体错误发生在那几行。通常有几种常见的错误,例如:缺少对象这种很多时候是有些被你调用的字段有可能为空的情况出现的,可以加if(___=null)语句加保护。追踪的方法基本就是用alert语句,放在有可能出错的地方。
4、一些习惯
遇到问题先自己思考,无从下手再找高手帮忙看看,注意他帮你看的思路,别在一旁闲着,看多了自己也会了,不然你一辈子都停留在那种水平,从人身上学到的东西远远比书多的多。
解决了一个问题后,要去究根问底去找到问题产生的起因,以防你下次遇到类似的问题再浪费同样的时间。
把代码写的漂亮,注释、空行、规范一样不能少,可读性是放在第一位。曾经看过一个高手写的代码,真的一看就是不同水平的人写的,几乎很完美,读起来很流畅,方便自己也方便别人。
任务完后不要呆着,去要求经理给你更有挑战性的任务,只要你肯去尝试,他们就会对你另言相看,把三天的任务一天加班搞定,效率和忠诚都有了,路也比较好走了。
软件工程心得篇4
在这次软件工程课程中,我学到了很多东西,第一次深刻的体会到了什么叫做用工程化的思想来编写软件,以前自己也写过一些小型软件,没有做过大型的项目,直到这次课堂我担任组长并组织组员共同完成“个人图书管理系统”这个项目,第一次和别人合作,才发现运用工程化的思想来做是如此的有必要。
从这里,我才真正的意识到实施一个软件工程并不是说简单的会编码就能够解决问题的,我们更多的精力不是放在编码上,编码只是一个很小的模块,只占到那么小的一个部分。这个事实在很大程度上颠覆了我以前的思想,在我以前的认识中,似乎整个软件就是编码,除此无它,还好有老师的指导,不然真的会出现老师所说的,撞得头破血流之后才想起来用软件工程的思想来完成这个工作。
刚真正开始工作之前,我们费了很多的时间来完成一些前端工作,如需求分析和可行性分析,这块工作在别人看来可能是相对无关紧要,甚至是多于的,其实,换做在以前,我也会这么认为。可是,我现在算是深深地明白了磨刀不误砍柴工的道理,这些工作的完成太有必要了,太重要了,要想你的软件有用有市场,能被别人接受和认可,在进行过程中不会出现崩溃性的问题,这些工作缺一不可。
还有就是接下来的一些设计模块,此模块与软件编码涉及比较紧密,主要是解决一些参数传递和接口通讯的问题,此模块对我的触动远没有上两个模块对我的影响大,因此再次也不做过多的介绍。
在整个活动的完成过程中,作为组长,我收获很多,我发现,要是组里有个人不怎么想做事情时,他对于整个组织的影响是毁灭性的,正所谓“一颗老鼠屎,能坏一仓谷”,以后我的组织里要是出现这样的人,我绝不会给他继续留下来的机会,我会在第一时间将他清除出去。还有就是,作为组长,你要做的最重要的事情,不是发挥自己的聪明才智,而是创造出一个平台,让别人去发挥,你所要做得,出了保证这个平台的完整性和公平性外,还有就是协调好各组员之间的关系。
软件工程心得篇5
在本学期的软件工程课程的学习中,我们学习了十一章的内容。第一章软件与软件工程的概念,这一章主要讲解的是一些概念性和基础性的内容,例如软件的概念、特性,软件危机的主要表现,软件工程的概念以及软件生存期、典型生存期模型等等。第二章软件工程方法与工具,这一章主要对软件工程方法进行介绍,包括三种方法:传统方法、面向对象方法、形式化方法。还引出了工具UML。第三章软件需求获取与结构化分析方法,本章详细介绍了需求获取与需求分析阶段的任务以及结构化分析方法,画分层的数据流图、E-R图以及状态图式本节的重点。第四章结构化分析方法,这一章重点讲解了使用变换型映射方法和事务型映射方法生成初始的模块结构以及模块结构的改进。第五章编码,这一章重点讲解了编码的风格及规范,还告诉我们编码规范说带来的好处,并告诫我们将来一点要形成好的编码风格。第六章软件测试方法,本章讲解了软件测试相关的概念及重要性,软件测试与开发各个阶段的关系;还介绍了白盒测试技术以及黑河测试技术。第七章统一建模语言UML概述,本章详细介绍了UML的基本模式、事物、关系及建模时用到的各种图进行了介绍。第八章面向对象分析,这一章主要讲解了面向对象分析的3种模型,包括功能模型、静态模型和动态模型。第九章软件体系结构与设计模式,本章对软件体系结构的基本概念、典型风格等进行了讲解。第十章面向对象设计,本章的重点是对面向对象分析时建立的对象模型进行调整和细化。第十一章软件维护,本章主要介绍软件维护的任务、软件维护活动以及软件维护方法进行了介绍。
要学习软件工程,学会如何系统的思考,以及养成良好的编码习惯,想学好软件工程,就必须知道软件工程的目标、过程和原则:软件工程目标:生产具有正确性、可用性以及开销合宜的产品。正确性指软件产品达到预期功能的程度。可用性指软件基本结构、实现及文档为用户可用的程度。开销合宜是指软件开发、运行的整个开销满足用户要求的程度。这些目标的实现不论在理论上还是在实践中均存在很多待解决的问题,它们形成了对过程、过程模型及工程方法选取的约束。
软件工程过程:生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤。软件工程过程主要包括开发过程、运作过程、维护过程。它们覆盖了需求、设计、实现、确认以及维护等活动。需求活动包括问题分析和需求分析。问题分析获取需求定义,又称软件需求规约。需求分析生成功能规约。设计活动一般包括概要设计和详细设计。概要设计建立整个软件系统结构,包括子系统、模块以及相关层次的说明、每一模块的接口定义。详细设计产生程序员可用的模块说明,包括每一模块中数据结构说明及加工描述。实现活动把设计结果转换为可执行的程序代码。确认活动贯穿于整个开发过程,实现完成后的确认,保证最终产品满足用户的要求。维护活动包括使用过程中的扩充、修改与完善。伴随以上过程,还有管理过程、支持过程、培训过程等。
软件工程的原则是指围绕工程设计、工程支持以及工程管理在软件开发过程中必须遵循的原则。
我们学习了详细设计的方法,其原则是过程描述是否易于理解、复审和维护,进而过程描述能够自然地转换成代码,并保证详细设计与代码完全一致。包括程序流程图、N-S图、PAD图、HIPO图
程序流程图:程序流程图又称之为程序框图,它是软件开发者最熟悉的一种算法表达工具。它独立于任何一种程序设计语言,比较直观和清晰地描述过程的控制流程,易于学习掌握。在流程图中只能使用下述的五种基本控制结构:顺序型;选择型;while型循环;until型循环;多情况型选择。
N-S图:一种符合结构化程序设计原则的图形描述工具,称为盒图,又称为N-S图。在N-S图中,为了表示五种基本控制结构,规定了五种图形构件。顺序型;选择型;WHILE重复型;UNTIL重复型;多分支选择型。
PAD图:它是用结构化程序设计思想表现程序逻辑结构的图形工具。PAD也设置了五种基本控制结构的图示,并允许递归使用。
HIPO图:HIPO图是由一组IPO图加一张HC图组成。它是美国IBM公司在软件设计中使用的主要表达工具。
HC图既是层次图,用于表示软件的分层结构。HC图中的每一个模块,均可用一张IPO图来描述。IPO图由输入、处理和输出三个框组成,需要时还可以增加一个数据文件框,这种图形的优点,是能够直观地显示输入—处理—输出三者之间的联系。
还有测试方法:按照测试过程是否在实际应用环境中来分,有静态分析与动态测试。测试方法有分析方法(包括静态分析法与白盒法)与非分析方法(称黑盒法)。
静态分析技术:不执行被测软件,可对需求分析说明书、软件设计说明书、源程序做结构检查、流程分析、符号执行来找出软件错误。
动态测试技术:当把程序作为一个函数,输入的全体称为函数的定义域,输出的全体称为函数的值域,函数则描述了输入的定义域与输出值域的关系。
还学习了其他很多工具、语言、方法等,虽然不是都学得很透彻,但我相信在今后的学习中一定会慢慢的完善的。
软件工程对于初学者来说,知识基础较薄弱,对一些应用 *** 作、概念、工具方法等理解起来较为困难,要能从整体概念上较好地理解和把握、学好软件工程,不是仅仅把几本专业书籍细致地看几遍,然后上机练习几次就可以成功,学习过程中要注意多看多练要注意结合实际,更要多思考,面对错误不要一范就问,要尝试自己去解决。但是还要注意什么都学,肯定是什么都学不透的,要集中精力打攻坚战,学习软件工程首先要明白自己的学习目标究竟是什么,根据自己的实际工作出发,有针对性的在相应的学习方向上进行提高,制定出详细的学习规划。还要注意与其他科目的相辅相成,就像我们在学习面向对象分析的时候要结合大一学习的面向对象及其方法学这一专业科目进行研究拓展;在学习语言时,要看看与C语言的联系,多思多想,把从各个科目学到的知识通汇贯通。
在软件工程的学习中,我了解到了软件并非是一些代码这么简单,在开发软件的过程中,编写代码的工作量其实只占不到所有工程量的30%,而后期的管理和维护更是占了60%到80%之多。一个完整的项目规划须包括,软件的定义,可行性分析报告,项目开发计划,软件需求说明书,概要设计说明书,详细设计说明书,用户 *** 作手册,测试计划,测试分析报告,开发进度报告,项目开发总结报告,软件维护手册,软件问题报告,软件修改报告,等多个文档,每个文档都要上级验收审查,而文档数量众多,要做好这点真的不是很容易,而恰恰写好文档正能保证完成软件工程其中一个目的的关键,既研究如何用最小的开销做出生存期较长的软件,再加上各个阶段都要进行周密的策划、详细的分工部署和人员安排,且各阶段要据具体情况不断的反复才能达成,所以代码只是开发软件这个浩大的工程的一个小小的过程。
而编码的学习中,我更了解到形成自己独特的规范的编码风格是非常重要的事。因为这影响到了软件后期繁重的维护,大家都要阅读你的程序,如果你写的程序毫无规范可言,那么别人怎么能读懂你的程序读不懂程序,维护又从何谈起呢所以,我们在今后的学习中,一定要注意这方面的培养,在写程序的过程中,要逐步的在规范的基础上形成属于自己的风格,即方便自己的修改,也方便日后他人的阅读。
在学习中,我们还要注意比较三种方法的优缺点,例如:传统方法虽然使软件摆脱了混乱和无序,但其在适应需求变化的方面不够灵活,而且传统方法要么面向行为,要么面向数据,缺乏两者的有机结合。而面向对象方法的程序设计和问题求解更符合人们日常自然的思维习惯,适合大型、复杂及交互性比较强的系统。形式化方法则是一中基于形式化数学变换的软件开发方法,它可将系统的规格说明转换为可执行的程序。
在今后的学习中要注意多读书、多思考、多练习、多讨论,不断熟悉书本的基础,并以此为基础将其扩散开来,应用于今后的实践。不断锻炼自己,向一名合格的程序设计师迈进。
软件工程心得篇6
这次软件工程实训是从__年__月__日号开始的,截至__年__月__日号。实训内容是用java相关知识(主要是jsp)做一个物流配送系统。下面谈谈对这次实训的看法。
因为自己平时对java知识储备不足,特别是jsp这一块基本不了解怎么回事,所以一拿到这个项目,我心里都是没有底的,再加上我被分到的那个组,我知道就意味着是我一个人在战斗了。呵呵,26号,实训开始了,我们的老师是来自中软国际公司的程序员,一个是周褀,一个是朱映,都是一身朴素的着装,让我感觉做软件的也没什么两样。老师介绍了自己之后,就直接切入正题了,分析了下我们各个组的系统,即将用到的知识,然后就总体把觉得需要补充的知识(jsp和数据库连接等这几块)给我们实际 *** 作了下,因为当时看到用jsp,还讲的那么认真,当时我就后悔了,平时要是多听点,现在老师这么认真的给我们讲,这是一个多么难得的机会啊。后悔也没用啊,开始还勉强能理解一点,后来就直接晕了。然后再给大家介绍了一些即将用到的工具,比如rationalRose,SVN,MyEclipse等等。接下来的几天就不再细讲了。下面谈谈通过这次实训的心得体会吧。
通过这次实训,让我了解到工程开发的过程,可行性分析——>需求分析——>概要设计——>详细设计——>代码编写——>测试——>验收。从技术方面上,我开始jsp基础基本上就是零的,在老师和syz2(另外一个物流小组,我一个人基本上是跟她们做的,或者说是看着她们做的)的帮助下,对jsp有了一个大概的认识。其实实训开始前,我还以为做个系统没什么大不了,可是当真正拿到一个项目,我却真的无从下手了,而且就是在知道需求分析和详细设计,在代码编写时,一样寸步难行。通过这个实训,也让我了解到,团队协作是多么的重要。一个人的精力是多么的有限。进一步理解到,企业为什么如此重视团队协作。同时借用老师的话就是团队协作固然重要,但是是建立在个人素质的基础上,假设你个人素质不行,将会影响到整个团队,就别提对团队作更多贡献了。__老师说这几句话的时候,朝向了我,估计是有特殊意义的吧,所以,我将谨记老师的教导。
还有一个收获是从一个同学(小胖)那里得到的,他的那组成员跟我的这组大体一样,我倒是觉得没什么了,不过他倒是很重视这个问题吧。然后他说出来,我也觉得这个问题确实其实是个大的问题。就是不管你会不会这门技术,会不会做这个东西,态度要正确才好,就算你不会做,你也应该认真的对待,将来 出身到社会,就不是说像你现在,不会做就不做,跑去玩游戏了。小胖说出了这段话,也在我身上有了一个印证,虽然我jsp技术知识为0,但我也还是在认真的跟着他们一起做,不会做,就多问,毕竟现在我们是学生,可以毫不顾忌的询问各种问题,老师也会尽力为你回答。将来出身社会就不一样了。虽然,我就算个打酱油的水平,但是这个酱油也要打得有涵量啊。不管怎么样,我能对自己有个交待,虽然我不会,但是这次实训我确实是认真对待了,六天的实训,除了晚上加班外,还花了2个通宵来完成不同阶段的任务,完成与否也不重要了,我至少我做了,这点,是这次我应该对自己的一个肯定。
这次实训的心得基本上就是这些了,最后特别感谢中软国际带我们的那两个老师(周褀,朱映),这两个老师对待我们很平易近人,对我们提出的问题,总是不光解决了,还进行了扩展,晚上也跟我们一起加班加到很晚,印象尤其深刻就是朱映老师为了给小胖解决一个问题,脸都变红了,还在继续努力,这点我并不会觉得老师知识储备不够,我想应该是这个问题的突发吧,一时没想到怎么处理。相反让我感觉更多的就是老师很认真,很负责。还要感谢就是syz2小组的倾力支持,辅导。
以上就是关于如何jsp,学习JSP都需要学习什么全部的内容,包括:如何jsp,学习JSP都需要学习什么、如何用JSP实现网页聊天室、java编写扫雷程序的流程图,哪位大侠帮下,小弟急用~~~等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)