软件工程

一位软件工程师的6年总结

╄→尐↘猪︶ㄣ 提交于 2019-12-27 21:38:57
1、分享第一条经验:“学历代表过去、能力代表现在、学习力代表未来。”其实这是一个来自国外教育领域的一个研究结果。相信工作过几年、十几年的朋友对这个道理有些体会吧。但我相信这一点也很重要:“重要的道理明白太晚将抱憾终生!”所以放在每一条,让刚刚毕业的朋友们早点看到哈! 2、一定要确定自己的发展方向,并为此目的制定可行的计划。不要说什么,“我刚毕业,还不知道将来可能做什么?”,“跟着感觉走,先做做看”。因为,这样的观点会通过你的潜意识去暗示你的行为无所事事、碌碌无为。一直做技术,将来成为专家级人物?向管理方向走,成为职业经理人?先熟悉行业和领域,将来自立门户?还是先在行业里面混混,过几年转行做点别的?这很重要,它将决定你近几年、十年内“做什么事情才是在做正确的事情!”。 3、 软件开发团队中,技术不是万能的,但没有技术是万万不能的!在技术型团队中,技术与人品同等重要,当然长相也比较重要哈,尤其在MM比较多的团队中。在软件 项目 团队中,技术水平是受人重视和尊重的重要砝码。无论你是做管理、系统分析、设计、编码,还是产品管理、测试、文档、实施、维护,多少你都要有技术基础。算我孤陋寡闻,我还真没有亲眼看到过一个外行带领一个软件开发团队成功地完成过软件开发项目,哪怕就一个,也没有看到。倒是曾经看到过一个“高学历的牛人”(非技术型)带一堆人做完过一个项目,项目交付的第二天,项目组成员扔下一句

软件工程实践项目课程的自我目标

落花浮王杯 提交于 2019-12-27 16:43:52
### 学习到的能力的预期 - 可以把书上的理论知识运用到实践当中, 增强自己的实践能力,动手能力。所以上课就要认真,积极完成老师布置的学习任务,定期更新自己的博客,多敲代码,增强个人的编程能力,学会 如何从单纯的编程走向软件开发。 ### 对项目课程的期望 - 第一次接触博客园,很新奇,原来学习的工具也可以那么多样化,希望以后在完成老师布置的任务过程中,能熟悉并掌握计算机领域的学习工具,提高自己的组织语言能力. - 能够深刻并且详细的了解一个软件形成的基本过程,从开始的需求分析到最后的发布并且供用户使用. ### 对项目的愿景规划 - 方便人们生活,让大家能更好的享受计算机物联网带给大家的便利。 来源: https://www.cnblogs.com/yaq233/p/6474129.html

测试的目的、时期、分类

社会主义新天地 提交于 2019-12-27 10:55:37
1.软件测试的目的是什么? 测试的目的在于,(1)确认软件用正确的方式做了正确的事情(do the right thing in the right way);(2)提供信息,为开发人员或者测试经理提供反馈,方便风险评估;(3)软件测试不只是在于软件产品本身,还在于软件的开发过程。因为如果一个软件开发完成之后,发现很多问题,这就说明软件的开发过程很可能是有缺陷的。软件测试是为了能够保证整个软件开发的过程是高质量的。 也可以说是,软件测试是找到缺陷,为了给用户最好的产品。软件测试目的是在于产品质量是否符合上线要求?因为有些软件都是带着缺陷上线的产品,所以软件测试的目的只是为了找bug的话,那简直就是浪费生命啊。 测试只能证明软件有错,不能证明软件无错。软件测试是为了更好的满足用户的需求,而找bug只是一种手段而不是目的,毕竟软件开发出来是给用户使用的,而不是给软件测试工程师找bug的。 2.什么时候需要软件测试? 软件测试贯穿于软件定义和开发的始终,其存在于软件开发的生命周期的每一个阶段。需求分析、概要设计、详细设计、程序编码等各个阶段所得到的文档,包括需求规格说明、概要设计规格说明、详细设计规格说明以及源程序,都应该作为软件测试的对象。有限次的测试并不能说明软件在各个情况下都能正常使用,只能说明在某些特定的情况下能够正常使用。 3.根据不同的测试阶段,测试可以分为什么?

软件工程课程总结

余生颓废 提交于 2019-12-27 09:59:11
  时光飞逝,转眼间大二下半学期临近尾声,软件工程这门课也已经结束。回顾这学期,我得到了一些收获,也认识到了自己身上的一些不足。通过这学期的学习,我的编程能力比上学期有了一些提高,然后也得到了一些团队开发的经验与能力。但是有些毛病还是没能改正,比如说拖延症,也可以说是懒。每次留的作业总是在最后再写,总是在截止日期前一小段时间时完成。我写程序本来就慢,一些编程作业还总是留到最后再写,导致时间不足,只能熬夜或者借鉴(相当于抄,但是我习惯抄完之后再读一遍,把代码思路弄明白,然而总归不是自己写的代码)。   首先,这学期学到了如何进行团队合作。在这学期,老师留给我们的作业基本上都是团队开发的作业。一开始是让我们组队做石家庄地铁系统,然后我和队友就做好了分工,我做前端页面,他做后台功能,最后我们两个再进行项目对接。在老师说要进行成果展示之前,我们两个的项目还都是单个项目。听到说要展示,我们才开始对接,最后对接成功,侥幸的进行了成果展示。说到底还是我们两个对时间没有规划好。   其次,这学期还提高了自学能力。当石家庄地铁项目完成以后,又有了四人的团队开发作业,我们要做的是APP。之前我们四个谁也没有开发APP的经验,都是从零开始。我们四个从菜鸟教程、哔哩哔哩、博客园、CSDN等各个网站上找视频、文字教程来看。后来虽然成果很垃圾,但是总归做出了一个APP。   最后,还学到了一些项目开发的经验

为什么软件工程师应该养成写作的习惯?

泪湿孤枕 提交于 2019-12-27 00:45:24
本文编译自 Shubhro Saha 的个人博客 在学校里,有“文科生”和“理科生”的区分,学习内容不同,思维方式也有差异。我是一名理科生,大学里我的专业是计算机科学,毕业后我的工作是软件工程师。在这个过程中,我发现文理科之间的鸿沟始终无法弥合。我见到的很多工程师害怕写文章,而文科生看到代码就头疼。 我认为,程序员应该养成写作的习惯。因为写文章会锻炼许多对于编程十分有益的技能。 写文章和写代码最核心的共同之处在于它们都需要清晰思考的能力。 顶尖的软件工程师往往也是优秀的写作者,他们的文章和代码一样富有逻辑性,行文流畅、优雅。 文章和代码有很多相似之处:二者都是从一个空白的页面开始,把一个想法最终变成完整的产品,推向特定的受众;写文章和写代码都需要你把一系列有逻辑的语句封装进一个个模块中,这些模块可以是函数也可以是文章的段落;好代码与好文章一样都需要言简意赅,不然就会浪费 CPU 资源或人的精力。 当某个产品快要完工时,软件工程师会像作品快要发表的作家一样焦虑不安。和写文章一样,软件永远不会有彻底完成的时候,工程师需要花更多时间优化代码、开发新功能或者重做某个部分,因为他们担心发布的作品没有展现出自己最好的一面。 软件工程师应该写作因为现在开发协作变得越来越重要。 开源项目可以得到来自世界各地人民的参与。开发和运营一个产品常常需要大量工程师(Google Maps 有 1100

201571030124 初读《构建之法》(Build To Win)有感

只愿长相守 提交于 2019-12-26 09:57:04
  最近略读了《构建之法》被作者诙谐幽默的写作风格深深吸引住了,文中有大量通俗易懂、形象鲜明的例子,更好的理解文中提出来的概念与理论。我是第一次接触到软件工程这门课,之前对于软件工程的理解就是编程写出一个应用程序,然而当我对读了本书之后,才对软件工程有了一个大概的了解。   在本书中,作者提出了一种全新的教学理念"Learning by Doing",也就是"做中学",与传统的教学方式不同的是提倡学生在大量的实践中学会知识、应用知识,掌握实用的软件工程技术。同时书中提供了大量链接,可以方便学习自己不了解的知识。   下面是我在阅读中遇到的5个问题:    <1> 在阅读了第三章 "软件工程师的成长"后了解到了工程师掌握知识的四个阶段:"入门(Introductory)、熟练(Competency)、带头人(Leadership)、大师(Mastery)"但我还是不明白成为一名合格的软件工程师需要具备哪些专业知识和开发经验与要求?    <2> 在P53页中作者提出了"过早的优化是一切罪恶的根源",而且举了一个生动的例子。我对此有不同的看法,在软件工程开发过程中,如果遇到了问题就及时解决,那到最后问题岂不是越越少?为什么这里说过早的优化是不可取的?    <3> P27页提出"100%的代码覆盖率并不等同于100%的正确性!",那怎么才可以达到100%的正确性?    <4

软件测试 → 第一章 基础-> 软件与软件危机

半世苍凉 提交于 2019-12-26 09:46:03
一、 软件概念 1、软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。 2、程序是按事先设计的功能和性能要求执行的指令序列。 3、数据是使程序能正常操纵信息的数据结构。 4、文档是与程序开发,维护和使用有关的图文材料。 二、 软件特性   形态特性、智能特性、开发特性、质量特性、生产特性、管理特性、环境特性、维护特性、废弃特性、应用特性 三、 软件种类   1、系统软件:操作系统 数据库管理系统 设备驱动程序 通信和网络处理程序等   2、支撑软件(工具软件)     ①、纵向支撑软件:分析、设计、编码、测试工具等;     ②、横向支撑软件:项目管理工具,配置管理工具等   3、应用软件:工程与科学计算软件 商业数据处理软件 ERP软件 计算机辅助设计/制造软件 系统仿真软件 智能产品嵌入软件 事务管理、办公自动化软件    4、可复用软件:标准函数库、类库、构件库等 四、 软件危机及其原因   软件的发展速度远远滞后于硬件的发展速度,不能满足社会日益增长的软件需求。软件开发周期长、成本高、质量差、维护困难。 五、 软件工程   采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。 六、 软件生命周期 6.1

《软件工程》总结——第十章

限于喜欢 提交于 2019-12-25 22:30:41
本章的主要内容是软件测试 验证与确认 软件的错误 1. 软件未达到产品说明书标明的功能;2. 软件出现了产品说明书指明不会出现的错误;3. 软件功能超出了产品说明书指明的范围;4. 软件未达到产品说明书虽未指出单应达到的目标;5. 软件测试人员认为软件难以理解、不易使用、运行速度缓慢,或者最终用户不满意。 验证与确认 验证和确认是两个相互独立但却相辅相成的活动,Boehm 对两者的关系作出如下的描述:验证:我们是否在正确地制造产品?;确认:我们是否在制造正确地产品?。EagLesone 和 Ridley 把这两个概念进行了集成,提出:我们是否在保持产品的正确性?。 V & V 的活动 验证和确认在各个阶段中制定和管理特定的任务,其活动跨越了软件的整个生命周期。IEEE Std 1012—1998 给出一个验证和确认过程。 软件测试基础 什么是软件测试 Glen Myers 对软件测试提出了以下观点:1. 测试时一个程序的执行过程,其目的在于发现错误;2. 一个好的测试用例很可能是发现至今尚未察觉的错误;3. 一个成功的测试用例是发现至今尚未察觉的错误的测试。 软件测试的基本原则 1. 应当把“尽早地和不断地进行软件测试”作为软件开发者的座右铭;2. 程序员应避免检查自己的程序;3. 在设计测试用例时,应当包括合理地输入条件和不合理的输入条件;4.

整理软件工程最基本的几个概念

假装没事ソ 提交于 2019-12-25 18:58:33
引言: 发现很多的学科概念性的东西总是会忘记,因为没有用到日常的学习项目中,但是很多的东西往往是经常接触却不知道其中的意思,比如,什么叫软件???是不是一脸懵,作为一个计算机专业的人,虽然逻辑的思维很重要,但是也要掌握一些最基本的概念。所以这里我就 总结一些软件工程基本的概念 。 1、什么叫软件工程? 答: 软件工程就是将系统的、规范的、可度量的工程化方法应用于软件开发、运行和维护的全过程及上述方法的研究。 2、软件工程有哪些原则? 答: 抽象、模块化、信息隐藏、局部化、一致性、完整性和可验证性。 3、什么叫软件? 答: 软件的定义是计算机程序及其说明程序的各种文档。 4、什么是软件生命周期?什么是软件的生命周期模型?主要有哪些模型 答: 软件生命周期是指一个软件从提出开发要求开始直到该软件报废为止的整个时期(软件分析时期、软件设计时期、编码与测试时期、运行维护时期)。 关于这个重点说一下,我们平时的编写一些程序的时候,其实就有这个时期,你想刚开始可行性研究(当然,我们一般考虑的是自己的能力和时间是否可以去做这个项目),然后我们的脑子里面有一个大概的想法(概要设计),然后有了数据结构算法(详细设计),之后就开始利用编程语言编写(编码),然后运行测试看看是否符合(测试时期),之后小的程序基本就结束了,像一般的网页或者大一点的程序,就还有运行维护阶段。

UML介绍

China☆狼群 提交于 2019-12-25 13:57:07
 统一建模语言( Unified Modeling Language, UML)又称标准建模语言,是始于 1997年的一个 OMG标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,到构造和配置。   *注:OMG, Object Management Group 对象管理组织 UML常见图分类    UML从考虑系统的不同角度出发,定义了 用例图 、 类图 、对象图、包图、状态图、活动图、 序列图 、协作图、构件图、部署图等 10种图。   常见的UML图有用例图(Use Case Diagram)、类图(Class Diagram)和序列图(Sequence Diagram)。下面也将主要阐述这三种UML图. 一、为什么要学习 UML UML 是 Unified Modeling Language (统一建模语言)的简称。 UML 是对软件密集型系统中的制品进行可视化、详述、构造和文档化的语言。制品 {Artifact} 是指软件开发过程中产生的各种各样的产物,如模型、源代码、测试用例等。 Ø UML 建模可以达到以下目的: Ø 使用模型可以更好地理解问题 Ø 使用模型可以加强人员之间的沟通 Ø 使用模型可以更早地发现错误或疏漏的地方 Ø 使用模型可以获得设计结果 Ø 模型为最后的代码提供依据 二、 UML