【VB开源代码栏目提醒】:网学会员,鉴于大家对VB开源代码十分关注,论文会员在此为大家搜集整理了“08_编码和配置管理 - 软件工程”一文,供大家参考学习!
8 -1Software Engineering 编码和配置管理软件工程Module: 编码和配置管理上海交通大学计算机系Shanghai Jiao Tong University2Software Engineering沈备军编码的目的和质量要求编码模块的构件级设计源程序不可执行的可执行的程序设计语言的特性和程序设计风格会深刻地影响软件的质量和可维护性。
为了保证程序编码的质量程序员必须深刻理解、熟练掌握并正确地运用程序设计语言的特性。
此外还要求源程序具有良好的结构性和良好的程序设计风格。
3Software Engineering沈备军程序设计语言和编码程序设计语言编码准则和规范软件版本管理4Software Engineering沈备军纯二进制机器码或符号机器码符号汇编语言宏汇编语言高级语言甚高级语言Byte或
word指令、数据不分用一些符号来代表指令如sub代表减Add代表加等机器地址用十进制。
有时汇编语言等同于符号机器码。
变量名用符号地址也可用符号而非数字。
编制的程序称为汇编语言程序。
用户可以定义新指令及子程序源程序编译为目标程序或解释执行高级程序语言的高层规约语言提供比高级程序语言更高级的语言设施。
又称为“可执行的规约语言”。
有时也不区别于高级语言。
计算机上语言的层次5Software Engineering沈备军高级程序
设计语言的分类说明式declarative语言函数式Lisp/Scheme ML Haskell …数据流Id Val …逻辑式或基于约束的Prolog spreedsheets…基于模板的XSLT …命令式imperative语言冯. 诺伊曼C Ada Fortran …??脚本式Perl Python PHP…面向对象Smalltalk Eiffel C Java …6Software Engineering沈备军适用各类应用领域的编码语言年代应用领域主要语言其他语言20世纪60年代商业COBOLAssembler科学计算FORTRANALGO、BASIC、APL系统AssemblerForth人工智能LISPSNOBOL现代商业Java 、C、COBOLC、PL/1科学计算Java、C、C、FORTRANBASIC
系统C、C、
JavaAda、Modula人工智能LISP、Prolog8 -2Software Engineering 编码和配置管理7Software Engineering沈备军脚本语言Script Language脚本语言是冯·诺伊曼语言的一个子类特点在于强调其主要用途是把用其他语言开发的独立程序作为部件“粘到一起”。
随着万维网的急剧增长脚本语言又凸显其在动态生成方面的作用。
它们还被广泛用作扩充语言使用户可以去定制或扩充那些“脚本化”的工具的功能。
8Software Engineering沈备军脚本语言的分类csh和bash是作为
作业控制程序shell程序的输入语言Awk是为了做文本处理
PHP和JavaScript基本上是为了生成包含动态内容的网页分别在服务器端和客户端执行Perl、Python、Ruby和Tcl是通用语言。
这里最强调的是快速原型更重视的是表达方便而不是执行速度。
9Software Engineering沈备军常用的脚本语言1perlperl的最大特点是有强大的字符串模式匹配是最好的文本文件的读取和生成语言。
perl具有很大的自由性象英语一样有很大的随意性perl有一个强大的数据库接口和其他各种接口。
perl有最大量的程序库。
perl不适合编写大程序。
perl有一个著名的缺点是难懂也有一个著名的优点是简练。
phpphp可以嵌入html更容易编写服务器端程序。
php天然和
web服务器以及
mysql数据库相结合。
php可以动态生成图像。
10Software Engineering沈备军
常用的脚本语言2python定位于入门的编程语言是basic的代替品它具有和basic同样的简单性并且编程语句更优雅。
有比较完整的面向对象特性可以用来编写大程序。
可用来操作定制其他程序从这个角度说python就是unix世界的basicpython具有非常好的扩充性python
程序可以和c程序以及java程序很好地结合。
tcl具有最简单的语法最好的和其他程序交互的能力有编写图形界面程序的tk。
javascript编写动态网页客户端的最佳工具。
11Software Engineering沈备军常用的脚本语言3Ruby动态语言smalltalk的替代品也努力作为perl、php、basic、python的替代品ruby 吸取了许多语言的精华??perl的正则表达式??python的语言的简单性可读性、最容易的扩展能力强大的可移植性。
??php的嵌入功能和多种客户端??smalltalk的纯面向对象语法和单继承??lisp的无穷嵌套的语法也就是函数式的语法。
??java和ada的线程编程??java的安全编程12Software Engineering沈备军语言的选择选择编码语言的标准应用领域算法与计算复杂性数据结构的复杂性效率的考虑8 -3Software Engineering 编码和配置管理13Software Engineering沈备军语言选择举例如果编写对性能要求苛刻或和操作系统结合紧密的程序必然选择c。
如果需要跨平台又要广泛的支持的话选择java。
如果编写大程序可能的化尽量用python不行了再用java和c。
因为python带来了生产力。
编写文本的处理程序用perl。
在
linux下最方便的工具语言是perl它有强大的社区和
代码库的支持。
编写知识的处理程序用prolog。
编写最灵活最模糊的程序用lisp。
编写office程序用vba。
编写服务器端程序用php、perl、python、asp、jsp。
编写数据库程序最简单的语言是
vb或delphi。
如果只作为简单应用的工具语言python和ruby是更好的选择他们的跨平台移植性好应用也比较广泛。
其中python更适合入门和交流长期使用也不错。
ruby是对python不满意的另一个选择它提供了很多额外的功能。
14Software Engineering沈备军程序设计语言和编码程序设计语言编码准则和规范软件版本管理15Software Engineering沈备军编码准则1Preparation. Before you write one line of code be sure you:Understand of the problem you’re trying to solveUnderstand basic design principles and concepts.Pick an appropriate programming language.Select an appropriate programming environment and tools.Create unit tests for each component you plan to create.16Software Engineering沈备军编码准则2Coding. As you begin writing code be sure you:Follow structured programming practice.Select data structures that will meet the needs of the design.Create interfaces consistent with the software architecture.Keep conditional logic as simple as possible.Create nested loops in a way that makes them easily testable.Select meaningful variable names and follow other local coding standards.Write code that is self-documenting.Create a visual layout that aids understanding.17Software Engineering沈备军编码准则3Validation. After you’ve completed the first pass be sure you:Conduct a code walkthrough when appropriate.Perform unit tests and correct errors you’ve uncovered.Refactorthe code.18Software Engineering沈备军编码的风格追求“聪明”和“技巧”提倡“简明”和“直接”使用标准的控制结构清晰的前提下求取效率Make it right before you make it faster.Make it clear before you make it faster.Keep it right when you make it faster.求快不忘保持程序正确Keep it simple to make it faster.保持程序简单以求快Don’t sacrifice clarity for “efficiency”.书写清楚不要为“效率”牺牲清楚8 -4Software Engineering 编码和配置管理19Software Engineering沈备军GOTO语句是有害的尽可能避免使用GOTO语句。
使用语言中的顺序、选择、重复等有限的基本控制结构表示程序逻辑。
例: 打印A B C三数中最小者程序20Software Engineering沈备军程序1if A Bgoto120if B C goto110100 write Cgoto140110 write B goto140120 if A C goto130goto100130 write A140 end 21Software Engineering沈备军程序2if A B and A C then write Aelseif A ≥B and B C thenwrite B elsewrite C endifendif22Software Engineering沈备军源程序的文档化code documentation有意义的变量名称适当的注释标准的书写格式用分层缩进的写法显示嵌套结构的层次在注释段与程序段、以及不同程序段之间插入空行每行只写一条语句书写表达式时适当使用空格或圆括号等作隔离符好的源程序本身就是详细设计文档23Software Engineering沈备军编码规范浏览C/Java 的编码规范24Software Engineering沈备军双向工程用户Use CaseDiagramActor AUse Case 1Use Case 2Use Case 3Actor BActivity DiagramyesActor AActor BClass DiagramGrpFileread open create fillFile repRepositoryname : char 0readDoc readFile from PersistenceFileMgrfetchDoc sortByName DocumentListadd delete Documentname : intdocid: intnumField: intget open close read sortFileList create fillDocument fList1FileListadd delete 1Fileread read fill the code..State TransitionDiagramOpenningWritingReadingClosingadd file numberOffileMAX / flag OFFadd fileclose fileclose fileComponent DiagramDocumentRepositoryFileListFileManagerGraphicFileFileCollaboration Diagramuser : ????????????mainWnd: MainWndfileMgr: FileMgrrepository : Repositorydocument : DocumentgFile: GrpFile9: sortByName L1: Doc view request 2: fetchDoc 5: readDoc 7: readFile 3: create 6: fillDocument 4: create 8: fillFile Sequence DiagramusermainWndfileMgr: FileMgrrepositorydocument : DocumentgFile1: Doc view request 2: fetchDoc 3: create 4: create 5: readDoc 6: fillDocument 7: readFile 8: fillFile 9: sortByName ??????¤??????-????????????????±??????????????????°??????????????????.??-????°ü???????????????????????? ??????-??????¤??????????????????????-°????????????????¤????????????????????.??-??é°?????????? ??????????é????°????????é??????????????????§??°·????¤·????????????????-??é????????????????????.CodesDeploymentDiagramWindow95??????-°ü??????????ó????????????.EXEWindowsNT??????-°ü????????????.EXEWindowsNTWindows95Solaris??????????-????.EXEAlphaUNIXIBM Mainframe??????????????????????????-????Windows95??????-°ü??????????????????????ê????°????????????????????????×??×??????÷????·????????¤????????????????????°á??????¨-??????????ì95 : ??????ó????????????-??????????ìNT: ??????????-????-????????????????????: ??????????-??????×??????????????-???? ??????????-????-IBM ????????????·??????: ??????????????-???? ??????????-????正向工程Forward Engineering逆向工程Reverse Engineering模型8 -5Software Engineering 编码和配置管理25Software Engineering沈备军确保模型和
代码的一致需求Actor AUse Case 1Use Case 2Use Case 3Actor B设计GrpFileread open create fillFile repRepositoryname : char 0readDoc readFile from PersistenceFileMgrfetchDoc sortByName DocumentListadd delete Documentname : intdocid: intnumField: intget open close read sortFileList create fillDocument fList1FileListadd delete 1Fileread read fill the code..
代码一致一致26Software Engineering沈备军著名的竞赛ACM ICPChttp://icpc.baylor.edu/icpc/ topcoderhttp://www.topcoder.com/ICSE软件工程竞赛SCOREhttp://score.elet.polimi.itACM研究竞赛SRC: Student Research Competitionhttp://www.acm.org/src/分本科组和研究生组初赛自己根据他们说的研究方向交一篇相关
论文把你自己最好的
论文发过去给相关的方向的小组复赛网上指导E-Mail联系自己组织小的研究团队但是成员必须来自各个国家他们分配美国一个教授指导决赛去美国他们当面指导3个月比
论文最后每个人必须出一篇
论文独立完成。
论文全部发表在ACM杂志上的27Software Engineering沈备军程序设计语言和编码程序设计语言编码准则和规范软件版本管理28Software Engineering沈备军软件配置是由在
软件工程过程中产生的所有信息项构成的它可以看作该软件的具体形态软件配置项在某一时刻的瞬间影像
代码文档报告数据软件配置的定义29Software Engineering沈备军版本version表示一个配置项具有一组定义的功能的一种标识。
随着功能的增加、修改或删除配置项被赋予不同的版本号。
一般在配置标识
方案中给出版本标识方法。
1.01.42.01.31.21.1.11.12.11.1.2版本树30Software Engineering沈备军基线baseline通过正式的技术评审或测试的软件配置项才能成为基线。
成为基线后软件配置项必须严格控制变更。
8 -6Software Engineering 编码和配置管理31Software Engineering沈备军版本控制防止未授权的变更保存
文档的各个版本和版次防止多个人同时修改文档check-in/check-out支持并行开发支持基线32Software Engineering沈备军配置库CM Repository存储配置管理信息及软件软件配置项的版本信息。
配置库33Software Engineering沈备军Check-in和Check-out软件配置项通过检入Check-in进入配置库开始“冻结”由于各种原因需要变更从配置库中检出Check-out配置项check in和check out通过加锁协调多用户操作每次check in时在配置库上都会生成新的版本34Software Engineering沈备军53432102103210Release 1.0Release 1.1Release 2.0并行开发Rel2Rel1 fixbug35Software Engineering沈备军版本控制的最佳实践合理组织项目及子项目结构避免多人Check-Out合理管理权限避免长时间不Check-in以及不Get Last Version避免强行修改未Check-Out的本地文件的Read-Only属性建议
代码Check-in之前需通过单元测试每天或定期备份所有数据36Software Engineering沈备军版本控制工具MerantPVCSIBM Rational ClearcaseMicrosoft Visual Source SafeCVS FreewareSVN Freeware…