软件工程———我的总结

1、回想开学初对于软件工程这门课的指望,总结本课程对你带来的提高:

1.学习和使用的新软件

  • Git
    Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
    每个 Git克隆 都是一个完整的文件库,含有所有历史记录和修订追踪能力,不依赖于网络链接或中心服务器。其最大特点就是“分支”及“合并”操做很是快速、简便。
    经过使用Git学会了如何建立本身的项目仓库,建立分支,提交本身的代码至本地仓库,再pull远程仓库,便于团队合做。也学会了如何解决他人代码与本身代码冲突的解决办法。

2.学习和使用的新工具

  • Enterprise Architect
    Enterprise Architect是一个全功能的、基于UML的visual CASE工具,主要用于设计、编写、构建并管理以目标为导向的软件系统。它支持用户案例、商务流程模式以及动态的图表、分类、界面、协做、结构以及物理模型。此外,它还支持C++、Java、Visual Basic、Delphi、C以及VB.Net。
    Enterprise Architect在软件工程课中主要用来画Use case图、类图、顺序图等在工程开发中须要的各类图。
  • Markdown编辑器
    Markdown是一种可使用普通文本编辑器编写的标记语言,经过简单的标记语法,它可使普通文本内容具备必定的格式。
    Markdown的语法简洁明了、学习容易,并且功能比纯文本更强,所以有不少人用它写博客。

3.学习和掌握的新语言、新平台

  • C#
    C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。并定于在微软职业开发者论坛(PDC)上登台亮相。C#是微软公司研究员Anders Hejlsberg的最新成果。C#看起来与Java有着惊人的类似;它包括了诸如单一继承、接口、与Java几乎一样的语法和编译成中间代码再运行的过程。可是C#与Java有着明显的不一样,它借鉴了Delphi的一个特色,与COM(组件对象模型)是直接集成的,并且它是微软公司 .NET windows网络框架的主角。
    C#是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不容许多重继承)。C#综合了VB简单的可视化操做和C++的高运行效率,以其强大的操做能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。
    结对编程时,使用C#编写用户界面比较方便,因此学习这门语言。
  • MVC开发
    MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑汇集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不须要从新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
    MVC的优势是耦合性低、重用性高、生命周期成本低、部署快、可维护性高、有利软件工程化管理。
    由于咱们作的项目是基于微信的藏医药平台,因此在网页设计这块选择了MVC进行网页的开发。经过完成这个项目,也学习使用了通常的MVC开发。直到如何创建模型类,创建视图,并经过控制器实现前端页面与数据库的简单交互。

4.完成的代码

大概在2000行左右吧,算上结对编程的计算器以及MVC的网页设计。

5.学习和掌握的新方法

  • 需求分析
    需求分析也称为软件需求分析、系统需求分析或需求分析工程等,是开发人员通过深刻细致的调研和分析,准确理解用户和项目的功能、性能、可靠性等具体要求,将用户非形式的需求表述转化为完整的需求定义,从而肯定系统必须作什么的过程。
  • 单元测试
    单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,通常来讲,要根据实际状况去断定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中能够指一个窗口或一个菜单等。总的来讲,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程当中要进行的最低级别的测试活动,软件的独立单元将在与程序的其余部分相隔离的状况下进行测试。
    经过单元测试,能够解决减小软件可能会出现的各类bug。这对于提升程序的可执行性有着极大的做用。
  • 白盒测试和黑盒测试
    白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运做的。"白盒"法全面了解程序内部逻辑结构、对全部逻辑路径进行测试。"白盒"法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。
    黑盒测试也称功能测试,它是经过测试来检测每一个功能是否都能正常使用。在测试中,把程序看做一个不能打开的黑盒子,在彻底不考虑程序内部结构和内部特性的状况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。

总结与展望

1记录本身在软件工程课程上的经验总结前端

  • 软件开发领域中的知识在于积累。
  • 作软件开发,就相似算数学题和世界杯足球赛同样:重在结果,而不在意过程。
  • 软件服务于人类,软件是在解决一些生活中的问题和错误,问题决定解决方案。
    遇到问题应该怎么去解决?
  • 不明白就多问,不要自已一直去琢磨。
  • 一个问题若是30分钟尚未解决就应该考虑是否是问问别人。
    怎么样才能作好软件开发?
  • 首先要明白解决的问题是什么,理解问题,其次再决定怎么解决这个问题。因此首要的事,需求分析必定要作好。
  • 碰到很复杂的问题,咱们就简单想,把问题简单化,细化到可以实现为止。
  • 出了问题,咱们要先分析问题,而后知道引发问题的缘由,最后并想出问题的解决办法。
    2对于下一届的学弟学妹你有什么建议和告知呢?
  • 对于软件工程这门课程,仅仅学会理论知识是远远不够的,咱们要结合实践加深增强对理论的理解。
  • 要作好软件开发,要有必定基础的编程语言基础,因此要在大一学好程序设计基础这门课程。
  • 软件开发不是一我的能够简单完成的事(若是你的项目足够大的话),毕竟一我的的能力是有限的,因此要学会团队合做,发挥着各自的长处,共同完成项目。
    3分析一下本身所处的团队。软件工程实践是大学里少有的认真的团队协做经验。《构建之法》团队合做的阶段,大家团队经历过么?最后到达了哪一阶段?
    我所处团队的项目是藏医药的微信平台。团队合做之初,咱们共同讨论对于项目的需求分析,用户分析,功能主体模块分析。进入开发阶段时,咱们肯定了团队分工,任务分配。在项目测试阶段,共同对项目功能的实现进行测试。可是其实,在团队分工以后,团队出现了严重的问题,由于各类缘由,项目的进度一再延后,主要是一些成员分工未能按时完成,致使最后你们又要去完成他们的分工。团队合做在项目开发中是很重要的,此次的经验教训会总结,在未来的团队合做中避免出现这样的问题。

我的总结补充

对于《构建之法》几个不懂的问题:
  • 问题1:
    (回答内容参考和引用了知乎上的评论)
    https://www.zhihu.com/question/20331201
    https://www.zhihu.com/question/21533684
    (第三章 软件工程师的成长)在看到那个精通魔方的例子时,我想到,咱们想在已经学习了C、C++、Java语言的一些基础,咱们或许没有可能作到真正意义上的精通各类语言,可是精通一种仍是能够作到的。然而在开发项目时,咱们可能会用到各类语言编写代码。如果这个项目咱们用某种语言编写会相对更加方便一点,可是咱们不是特别精通的,使用时可能要一边作,一边学习。而使用精通的语言去写,咱们会很熟练,但对于解决项目中的一些问题可能会更多的时间,咱们应该怎么作?
    答:在日复一日的编程工做中,做为程序员来讲必定要懂得相应的编程语言,但咱们是须要掌握一种语言仍是多种语言,对于程序员来说确定是掌握多种语言更有优点,学习不止一种语言的几大缘由:
  • 能够更好地实现用多种方式来解决一样的问题,懂得不一样的语言就意味着拥有更多的选择,这也正好应正了那句古语,当你只有锤子的时候,不管你看到什么都像是钉子。
  • 学习和掌握的语言类型越多,就更有竞争力,拥有更多的就业机会,做为程序员的你,应该不难发现,学习了第二门编程语言以后,有时候能够增长一倍你能够胜任职位的数量,但关键还取决于你学习的语言,可不管怎么说,这都会给你增长就业的机会。
  • 这是一个颇有趣的过程,在学习新内容或是新东西的过程当中能够很好地充实你的大脑,帮助你在一个新的领域当中更好的成长和提升。
  • 可以紧跟当前的技术发展趋势,只要你知道哪一个行业处于独领风骚的行列,即可以永远站在潮流的尖端,不管什么时候你的技能都不会过期。
  • 这个学习过程也能够很好地代表你可以学习新的语言,你的雇主能够更好地了解到你并非一个死板的程序员。
  • 掌握更多的语言可以帮助你成为一个更好地程序员,同时能够帮助你提升所在语言之间转移的技能。
  • 针对工做需求选用更好的工具,每种语言都有特定的使用环境,言外之意就是说若是知道更多的语言能够再工做需求当中选用更好的工具。
  • 学习的过程一样还代表你是一个快速的学习者,对于接受新知识的能力很强。
  • 问题2:
    (第三章 软件工程师的成长)团队合做时,当面对是认可本身的错误,推迟计划时间去改正仍是按计划提交最后影响团队进度时,咱们不管如何抉择都会影响总体进度,但咱们应该怎样正确地作出选择,以使团队损失降到最小?(Page 57 4—案例)
    答:有错误就应该用于承担,不能由于面子问题而去影响团队。咱们承担了错误,才有利于咱们引发重视,避免下次再犯。
  • 问题3:
    (第五章 团队与流程)主治医师模式由核心人员负责处理主要的模块,其余团队成员从各个方面从旁协助。在学习中咱们也常常有这种须要团队合做的做业,但每每的状况是,在团队成员肯定之初,你们都有积极的表现,随着项目的进行,有的成员会无所事事,分配的任务也不能按时完成或是置之不理,这种时候,其余成员不得不接手他的任务,增长工做量。如果任由这种状况发生,会使其余成员不满,可能会出现更多的这种状况。如果就此将他踢出团队,毫无疑问会影响项目的完成计划。因此,这种状况咱们应该如何处理?(Page 89)
    答:对于团队中的蛀虫,咱们应该采起的态度是毫不容忍,这种人会影响团队的和谐,不利于团队合做。因此即便由于少一我的影响短时间进度,咱们也不能所以就容忍这种事情发生。
  • 问题4:
    (第八章 需求分析)咱们在获取客户需求时,一般是将客户的要求放在第一位的。可是一般要求咱们开发软件的客户不是学习咱们这个专业的,他们对咱们的专业知识所知很少或者是一无所知。所以即便客户提出一个错误的要求而且要求咱们必定要作到,咱们也要将客户的要求放在第一位吗?
    答:需求分析师项目开发的第一步,是整个项目的指引,因此需求分析咱们要作到尽善尽美,对于这种问题,咱们应该积极作好和客户的沟通,确保作出正确的需求分析,从而不会影响项目的后期开发。
  • 问题5: 铱星计划的手机的失败在于他考虑到了用户使用时的各类状况,却把重点放在了少部分用户的特殊状况,从而在更多更广的普通用户方面作得不如其余手机,能够说是因小失大。可是如果咱们想要增长的功能不会影响所想要实现的大众功能,且大部分用户可能会用到,可是也可能永远不会用到(好比说洗衣机上的对各类不一样衣物的清洗,大部分状况下其实只用到了一种),那么这个功能咱们是否有必要去实现?(Page 330 迷思之六) 答:项目前期作好的需求分析须要咱们实现的功能,咱们应该把精力集中到这些上面。对于那些没必要要的功能,咱们能够结合实际状况,再作决定。
相关文章
相关标签/搜索