软件工程作业(浅谈对软件工程的认识)

《构建之法-现代软件工程》

首先,我们应该在自己内心先明确什么是软件工程?

几乎所有程序员都知道“程序=数据结构+算法”这句名言。 但是程序就是一个软件了么?其实并不是,一个程序要想成为一个软件是需要经过很多的过程的,包括需求分析、设计、测试、发布等等的步骤,这些都属于软件工程的范畴,因此一个推论就是 软件= 程序+软件工程 。

作为IT专业的学生,如果仅仅精通例如Java、C++、Python等,写过很多文档,考试成绩很高…。并不代表你真正懂得软件工程,也并不意味着你是一个合格的工程师。

软件工程包含下列领域:软件工程包含下列领域:软件需求分析、软件设计、软件构建、软件测试和软件维护。
软件工程和下列学科相关:计算机科学、计算机工程、管理学、数学、项目管理学、质量管理、软件人体工学、系统工程、工业设计和用户界面设计。

通过上述,可见,软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程,这是一个比较正式的定义,用我们自己的理解来说就是开发软件过程中包含的所有活动之和就是软件工程。

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

计算机科学(Computer Science)这一领域可以分为下面这些领域:
计算机理论
信息和编码理论
算法和数据结构
形式化方法
程序设计语言
计算机体系结构
并行计算和分布式系统
实时系统和嵌入式系统
操作系统
计算机网络
科学计算
安全和密码
人工智能 :模式识别、机器学习、数据挖掘、信息提取等
计算机图形学、加算计视觉、多媒体
数据库和大规模数据处理
万维网
自然语言处理和语音
人机交互
软件工程

软件工程只是计算机科学的一个分支,但其相互之间却有着密不可分的关系。

软件开发相关活动

从狭义上来将软件工程是从需求分析开始,到最后的软件维护终止,中间包含软件设计、构建、测试、发布。如果我们整体以一条线的模型来串起来,这就是我们熟悉的瀑布开发模型;如果我们每一小部分用一条线串起来,完成一小部分之后再接另一小部分,这就是迭代开发模型;在迭代开发模型的基础上,加上敏捷的项目管理方法(XP,Scrum等),我们就得到了敏捷开发(可以看到敏捷开发和迭代开发并不是一个层级的东西,放在这里可能不太合适)。

“要想了解世界,就必须亲自来打造它。”
正如这句话所说,想要了解,就要亲自打造构建。所以我们必须要具备一定的软件开发能力,而这也将是我们在以后的工作中必不可少的一项技能,程序员的存在意义大概也在于此。
如专家所归纳的:
哲学家:我思,故我在。
科学家:我发现,故我在。
工程师:我构建,故我在。

软件质量

进行软件开发,并不是单纯的交付一个可用的软件产品就可以了。软件质量的高低好坏也是我们应该重点考虑的。一个质量好的产品,不会频繁的出现问题,同时用户使用体验也会很舒服。相反软件质量低,用户就会来投诉了。

由前文的公式“软件=程序+软件工程”,进一步可知软件质量=程序的质量 + 软件工程的质量
这说明仅仅是程序写得好是不够的,软件开发所涉及的活动都会影响到软件的质量(跟性能很类似,上下游的组件、服务都会影响到性能)。

团队合作与个人

团队有团队的开发流程,个人也有个人的开发流程。通过学习软件工程,我们知道软件质量并不是谁的事,而是所有人的事,要完成一个高质量软件,个人不仅要完成好自己负责的部分,还要考虑整个团队的工程,我们就拥有了领导力。

PM是啥?
在不同的公司可以是:Product Manager(产品经理)、Project Manager(项目经理)、Program Manager(项目经理,区别于Project Manager)。

PM的能力要求和任务
1.观察、理解和快速学习的能力,PM要能够在一个新的领域快速上手。
2.分析管理能力。
3.一定的专业能力,如专业的理解和表达。
4.自省能力。

结语

《构建之法-现代软件工程》这本书虽然我只是粗略浏览了一遍,但却让我对软件工程有了全新的认识和更加全面的了解。作者通过大量的示例、图表等讲解,使得原本枯燥乏味难以理解的知识变得有趣,容易消化。它给出了你一个索引,你可以顺着它的线去寻找更高层的领域,而且很多方面为个人打开了一扇门,让你从更高处来看待自己的工作,极大的帮助了我们如何找准自己的定位及目标。

发布了1 篇原创文章 · 获赞 0 · 访问量 13

猜你喜欢

转载自blog.csdn.net/qq_43312876/article/details/104458924
今日推荐