写在前面:

  这是我作为一个软件工程专业学生的第一篇个人技术博客,虽然我接下来的人生中还会有无数像这样的博客,但这是一个开始,接下来我将会从一个软件工程专业的大学生向一个合格的程序元转变。说实话现在,这一刻对于软件工程我还是很懵懂,学了一箩筐的所谓软件工程的知识,但面对实际问题时还是无从下手,而且很多知识因为缺乏实际应用,久而久之也淡忘了。开始往往是最难的,但我知道,现在有无数和我一样的初学者正摩拳擦掌的的守候在门外,准备撞开这扇软件工程的大门,我有信心,有毅力在这条路上踏实而坚定的走下去 。


  第一次听说这门课需要自学时还是有点忐忑的,因为在缺乏老师知道的情况下自学一门课程难度可想而知,但当我开始慢慢看老师推荐的《构建之法》这一本书时,发现这确实是一本十分难得的好书,书中条理清晰,讲法更是难得的通俗易懂。现将我第一次的对书中的1,5,17章关于软件工程概论,团队组织及管理,开发流程总结如下,然后也提出了几个我在自学当中遇到的问题。
第一章 概论
  1.这本书首先在第一章简明扼要的阐述了软件工程的概论:软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。
软件=程序+软件工程

而一个软件的开发活动主要有(构建管理,源代码管理,软件设计,软件测试,项目管理)等内容,这也是软件工程的核心部分。广义上的软件工程也包括用户体验,用户界面设计,所以也可以扩展为:
软件企业=软件+商业模式
然后是软件开发的不同阶,这里可以用下面的图形象的说明:
2.软件的特殊性
 
复杂性 大型软件有超过百万行代码,上万个不同的文件。
不可见性 软件工程师能直接看见源代码,但源代码不是软件本身,工程师是看不见源代码是如何具体被执行的
易变性 软件看上去很容易修改,修改软件比修改硬件容易
服从性 软件不能独立的存在,他总是要运行在硬件上边,还要服从外界的各种要求
非连续性 有时候输入上很小的变化,会引起输出上极大的变化
其他 有许多不同的程序设计语言,软件工具开发平台,存在许多不同的软件开发流程,开发团队中有许多不同的角色,软件通常存储在磁带上,也可以存储在CD/DVD上

3.软件工程与计算机科学的关系

 
  大多数人并不能清晰的认识到两者的区别,众所周知,计算机系统由硬件系统与软件系统构成,计算机科学与技术专业偏重于硬件与计算机理论方面的学习研究,像计算机原理,计算机系统结构等方面的内容。当然也会涉及软件方面,但不是太深。而软件工程专业则主要偏重于应用与实践,主要是培养适应国内外软件产业市场需求的高素质、多层次、实用型软件人才,这也是教育部专门设置独立于计算机学院之外的软件学院的原因。
实际上,计算机理论的进展会帮助软件工程;软件工程的进展会帮助计算机科学家做更多的实验的探索。
4.软件工程的目标
大多数人都会认同,软件工程的目标是创造一个“足够好”的软件。那什么软件才叫足够好呢,没有bug就是足够好吗?软件工程就是一个逐渐消灭bug的过程?这确实只是软件工程的一个要素。实际上一个“足够好”的软件可以从以下几方面考虑:(1)用户满意度 (2)可靠性 (3)软件流程质量 (4)可维护性。做到了这些我们就可以说这个软件是足够好的了。软件工程的一个重要任务,就是要决定一个软件在什么时候能足够好,可以发布。


第五章 团队和流程
1.团队的模式: 主治医师模式,明星模式,社区模式,业余剧团模式,秘密团队,特工团队,交响乐团模式,爵士乐模式,功能团队模式,官僚模式。

以上都是在软件开发过程中的歌钟模式,顾名思义,每种模式都有它的特点和优缺点,在这里就不一一赘述。
2.软件的开发流程
目前的软件开发流程主要依照瀑布模型  
  
当然,瀑布模型也有很多局限性:比如软件需求作为软件开发项目中的一个关键因素,无法进行合适的测试,直至一个工作系统被开发出来并能演示给最终用户。事实上,好几个研究工作已经指出软件需求规约的错误通常在最后才被检测到(直至执行系统测试或验收测试才能被检测到),并且需要花费最大的代价对其进行纠正。

只有在生存周期的后期才能得到一个工作的系统。因此,直到系统几乎可以运行时,一个重要的设计或性能问题才有可能被发现,到那时通常已经太晚了,以至于无法采取有效的措施。

针对以上局限性,人们又提出了瀑布模型的各种变形。比如生鱼片模型,大瀑布带着小瀑布等。

第十七章 人,绩效和职业道德

软件工程师的职业道德:作为软件工程师应遵守以下原则:

1.公众:软件工程师的行为应与公众利益一致

2.客户与雇主:软件工程师应以其客户和雇主利益最大化的方式做事。

3.产品:软件工程师应当确保自己的产品以及相关的修改满足最高德尔专业标准。

4.判断:软件工程师应当具备完整且独立的专业判断。

5.管理:软件项目的经理和领导人应该提倡并亲自采用符合道德规范的方法来管理软件的开发与维护。

6.职业:在于公众利益一致的原则下,软件工程师应当保证职业的诚信和声誉。

7.同事:软件工程师应当公平对待同行,并给予支持和帮助。

8.自身:软件工程师应当终身学习提高自身的专业水平,并在工作中推动落实道德准则。

 

 
 
 

 

版权声明:本文为chizi原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/chizi/p/5372181.html