软件工程


去年暑假到现在是一个蜕变的过程!从软件工程到UML到设计模式再到三层架构(其实这些都属于软工的范畴),这是一条充满艰辛,充满曲折的道路,一路走来,感触颇多。

进入提高班,再次接触软件工程,让我觉得既熟悉又陌生。造成这种让人纠结的状态只能怪自己当时太无知。没有好好听大学老师讲课。不过也不必太自责,大家也都知道现在中国的教育现状。我想如果我当时好好跟着任课老师学,对软工认识的程度肯定也无法跟现在相比。很庆幸自己选择跟着米老师一直走下去。这个决定可以说是我长这么大最正确的一次!感谢米老师的悉心教导!

软件工程

软件工程,可以说是一门博大精深的学科。如果要用一种武功来比喻软件工程,那么我感觉也只有少林寺的《易筋经》能够体现出它在软件界的重要地位了。软件工程贯穿整个软件开发的始终,从设计到编码到之后的测试发布以及后期的维护,都离不开软件工程的思想。软件工程其实就是一种工具,将软件开发工程化,用科学的方法分析设计软件,为软件开发指制定合理的计划,最大限度的保证软件可以按时保量的完成。 软件工程是一门需要终身学习的课程 。随着以后不断的积累对于软工的认识会慢慢的加深,继续努力吧!

UML

UML是软件开发过程中一个非常重要的环节,可以说UML是软件工程的灵魂。它是对软件的整体设计与把控。UMLj将软工的思想绘成各种图,然后通过这些图加上设计模式,转化成系统的代码框架。有了框架,有了轮廓,剩下的具体实现的代码就可以一蹴而就。一气呵成了!
UML的四种关系——关联(组合、聚合)、依赖、泛化/继承、实现。还有九图都是学习UML的重点。九种图里面类图是重中之重。另外我感觉画时序图也很让人纠结,在做机房收费系统的时候,画的图就不太好,结果在写代码的时候就编写边改。着实让人头疼,吸取经验下次一定好好研究UML图。

设计模式

第一次用.NET做机房收费系统的时候用了一抽象工厂,稍微感受到了一下设计模式的好处。使用合适的设计模式可以让代码之间更加的独立,专业术语叫做低耦合。使代码更易复用。可谓好处多多啊。但值得注意的是,不要单纯的为了用设计模式而用设计模式。一定要结合实际情况,看看到底这里适不适合用设计模式,适合用哪种设计模式。这样才能发挥设计模式的作用,否则只会适得其反。总之设计模式是前人总结的精华,我们要用,更要会用,以便让它发挥最大的作用。想了解更多我关于设计模式的感受,请移步《大话设计模式读后感》

三层架构

三层的学习也颇费周折,这次米老师没有像之前那样给我们现成的资料,而是让我们自己去搜寻——为的是锻炼我们自己捕获事物,汲取营养的能力,从而让我们更适应大自然的生存环境。想要获得知识,世界上最大的知识库莫过于或联网,于是乎我就整天游荡于各大程序员社区——CSDN。博客园。51CTO等 都少不了我的身影。从那些大牛的博客里学习三层,逐渐的明白了三层到底是怎么一回事。
其实三层说白了就是将代码按照不同的功能分为不同的几个层,每一层都有自己的职责。例如负责跟数据库打交道的代码就放在DAL层(Data Access Layers),而一些逻辑判断就放在BLL层(Business Logic Layer)等等。说白了分层跟用设计模式用着异曲同工之妙,都是为了降低代码的耦合度,从而使得所开发的软件更易扩展、易维护。
分层也是一种思想,不同的阶段对于分层有着不同的理解。随着不断的学习,不断积累经验,对于分层的理解会慢慢的加深。

C#跟VB.NET

学习C#一是为了学习设计模式,因为《大话》中的代码是用C#实现的;而是为了让我们初步认识一下面向对象的编程思想。而学习VB.NET是为了从之前学的VB6无缝过渡到以后的面向对象。这一点很好的提现了米老师的“吃饭理论”——通过自己熟悉的知识去获得自己不熟悉的知识。

重构机房收费系统

又说到我们提高班的经典项目了——机房收费系统。这次重新做机房收费系统,首先是分层,然后又用了抽象工厂+反射+配置文件。而第一次做机房收费系统,用的是VB6,那个时候简直就是一个小白,什么UML、设计模式、分层都一呼不呼。所有代码都直接写到窗体下面,现在看之前做的东西,说难听点就跟屎一样!但是正是因为有当初的屎,才有了现在茁壮成长的庄稼!路是一步步走的,知识是一点点学的,所以不要在乎你现在有多差、水平有多低,只要肯努力,肯付出,再加上一个正确的方法,某天回头望去,发现自己已然到达了一个新的高度!所谓不积跬步无以至千里,不积小流无以成江海。说的就是这个道理,学习其实就是一个积累的过程。

合作开发机房收费系统

很无奈,又是它。这次你明白它为啥是提高班的经典了吧!合作开发主要是为了培养我们合作的能力,学习一下SVN的使用,同事也加深一下对三层和设计模式的理解。合作开发要比一个人开发快多了,这也是为啥要分层的一个原因,分层之后代码的耦合度降低,每个人负责一部分,只要按照一定标准跟规范就可以同时并行开发了,然后各自写完之后再合并,最后调试、打包就OK啦!这次合作没有什么太多的新东西,只是在原来的基础上加了一个外观模式。这次合作让我感受到注释说明很重要,如果注释说明写的清楚明白,那么几乎组员之间不用多余的交流就可以把项目做完,相反,如果写的不好,那么做起来就费劲了,写两句就要沟通一下,这样就没法进行下去了,而且还会带来理解上的偏差,这都会造成很多不必要的麻烦,所以合作很重要的一点就是制定好标准和规范。

结束语


写这篇博客真是不容易啊,因为之前的年度总结《我的IT之路2011(二)》里面已经对这一阶段进行了比较详细的总结,现在又重新再写一次,说白了就是用不同的话把一件事说了两遍,这对于我这个写作水平非常有限的人来说真是个挑战啊!还好写完了,好与不好各位多担待吧!不早了两点多了该睡觉啦!晚安各位!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强制返回为文本 -------------------------------- 数字类型的格式化 --------------------------------     固定格式参数:     General Number 普通数字,如可以用来去掉千位分隔号     format$("100,1
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办法, Format 或者FormatDateTime 竟然结果和系统设置的区域语言的日期和时间格式相关。意思是尽管你用诸如 Format(Now, "MM/dd/yyyy"),如果系统的设置格式区域语言的日期和时间格式分隔符是"-",那他还会显示为 MM-dd-yyyy     只有拼凑: <%response.write
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace My ‘全局错误处理,新的解决方案直接添加本ApplicationEvents.vb 到工程即可 ‘添加后还需要一个From用来显示错误。如果到这步还不会则需要先打好基础啦 ‘======================================================== ‘以下事件
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用的爽呀,这篇文章写与2011年,看来我以前没有认真去找这个方法呀。 https://blog.csdn.net/chzjxgd/article/details/6176325 金蝶K3 BOS的插件官方是用VB6编写的,如果  能用.Net下的语言工具开发BOS插件是一件很愉快的事情,其中缘由不言而喻,而本文则是个人首创,实现在了用V
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选中的单元格进行处理 Dim m As Range, tmpStr As String, s As String Dim x As Integer, y As Integer, subStr As String If MsgBox("确定要分列处理吗?请确定分列的数据会覆盖它后面的单元格!", _
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single) 2 Dim path As String, hash As String 3 For Each fil
  Imports MySql.Data.MySqlClient Public Class Form1 ‘ GLOBAL DECLARATIONS Dim conString As String = "Server=localhost;Database=net2;Uid=root;Pwd=123456;" Dim con As New MySqlConnection
‘導入命名空間 Imports ADODB Imports Microsoft.Office.Interop   Private Sub A1() Dim Sql As String Dim Cnn As New ADODB.Connection Dim Rs As New ADODB.Recordset Dim S As String   S = "Provider=OraOLEDB.Oracl
Imports System.IO Imports System.Threading Imports System.Diagnostics Public Class Form1 Dim A(254) As String    Function ping(ByVal IP As Integer) As String Dim IPAddress As String IPAddress = "10.0.
VB运行EXE程序,并等待其运行结束 参考:https://blog.csdn.net/useway/article/details/5494084 Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long Pr
今天碰到一个问题,登陆的时候,如果不需要验证手机号为空,则不去验证手机号 因为登陆的时候所有的验证信息都存放在一个数组里 Dim CheckUserInfo() As String ={UserBirthday, SecEmail, UserMob, UserSex, RealNameFirst, RealName, CheckCardID, CheckCardType, Contactemail
在VB6.0中,数据访问接口有三种: 1、ActiveX数据对象(ADO) 2、远程数据对象(RDO) 3、数据访问对象(DAO) 1.使用ADO(ActiveX Data Objec,ActiveX数据对象)连接SQL Server 1)使用ADO控件连接 使用ADO控件的ConnectionString属性就可以连接SQL Server,该属性包含一个由分号分隔的argument=value语
注:大家如果没有VB6.0的安装文件,可自行百度一下下载,一般文件大小在200M左右的均为完整版的软件,可以使用。   特别提示:安装此软件的时候最好退出360杀毒软件(包括360安全卫士,电脑管家等,如果电脑上有这些软件的话),因为现如今的360杀毒软件直接会对VB6.0软件误报,这样的话就可能会在安装过程中被误报阻止而导致安装失败,或者是安装后缺乏很多必须的组件(其它的杀毒软件或安全卫士之类的
Private Sub Form_Load() Call conndb End Sub Private Function conndb() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim strCn, sql As String Dim db_host As String Dim db_user As String
  PPSM06S70:  Add  moddate  EDITSPRINTJOB:  MAX(TO_CHAR(ETRN.MODDATE, ‘yyyy/mm/dd/HH24:MI AM‘)) ACTUAL_SHIPDATE   4.Test Scenario (1) :Query SQL Test DN:8016578337 SELECT CTRN.TKCTID TRUCK_ID,        
  沒有出現CrystalReportViewer時,須安裝CRforVS_13_0. 新增1個數據集,新增1個數據表,添加二列,列名要和資料庫名一樣. 修改目標Framework 修改app.config, <startup >改成<startup useLegacyV2RuntimeActivationPolicy ="true">  CrystalReport1.rpt增加數據庫專家 在表單
Imports System.Threading Imports System Public Class Form1 Dim th1, th2 As Thread Public Sub Method1() Dim i As Integer For i = 1 To 100 If Me.Label1.BackColor =
Friend Const PROCESS_ALL_ACCESS = &H1F0FFF = 2035711 Friend Const PROCESS_VM_READ = &H10 Friend Const PROCESS_VM_WRITE = &H20 Friend Const PAGE_READONLY = &H2 Friend Const PAGE_READWRITE = &H4 Friend
以下代码随手写的 并没有大量测试 效率也有待提升 如果需要C#的请自行转换 Function SplitBytes(Data As Byte(), Delimiter As Byte()) As List(Of Byte()) Dim i = 0 Dim List As New List(Of Byte()) Dim bytes As New
Imports System.Data.SqlClient Public Class Form1 REM Public conn1 As SqlConnection = New SqlConnection("server=.; Integrated Security=False;Initial Catalog= mydatabase1; User ID= sa;password")