计算与软件工程 作业一
一、遇到的困难
1、对于新软件——博客园的不熟悉,导致在准备时畏畏缩缩,害怕不小心点错,造成无法挽回的局面
2、对此,我都是在询问已经准备好的同学,顺利的将所有工具准备,注册完毕
二、工具认识及看法
1、博客园
博客园是IT精英们交流和学习的基地,也可以作为个人学习过程的笔记本
2、码云gitee
基于Git的代码托管服务,目前已经成为国内最大的代码托管平台,致力于为国内开发者提供优质稳定的托管服务。
功能:提供最基础的Git代码托管,提供代码在线查看、历史版本查看、Fork、Pull Request、打包下载任意版本、Issue、Wiki、保护分支、代码质量检测、PaaS项目演示等方便管理、开发、协作、共享的功能。
3、Markdown编辑器
Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,可以使普通文本内容具有一定的格式。
用途:写博客,编写说明文档。
一些常用语法(稍微列举几个)
1)标题
在想要设置为标题的文字前面加#来表示
一个#是一级标题,二个#是二级标题,以此类推。支持六级标题。
2)字体
加粗
要加粗的文字左右分别用两个号包起来
斜体
要倾斜的文字左右分别用一个号包起来
斜体加粗
要倾斜和加粗的文字左右分别用三个*号包起来
删除线
要加删除线的文字左右分别用两个~~号包起来
3)图片
三、学习过程
先是老师抛出软件,然后打开相应的链接到达相应的页面,由于先前对新软件的一无所知,也有忐忑不安,所以询问已经有准备的同学,在同学的帮助指引下,完成各个软件的注册与登录;接着,我打开百度,查询相应软件的功能、背景,去了解各个软件的作用;最后,打开博客园,写下这篇博客。
四、第一章概述内容的读后感
读完这篇文章,我知道了软件的由来以及不为人知的辛苦。
通过之前大一大二的学习,我知道“程序=数据结构+算法”,在没有学习软件工程时,我以为软件就是程序,而通过这篇概论,我知道了,一个软件的诞生,不仅仅是程序就能实现的,而是程序和软件工程的结合。软件工程(Software Engineering)是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。软件工程和机械工程,航空工程,等等工程学科一样,其中也有工程理论,控制论的原理。
一个软件服务的完成需要这样一些步骤:
(一)软件的构建
源代码(程序),合理的软件架构(Software Architecture),软件设计和实现(Software Design&Implementation),描述各个程序文件之间的依赖关系的各种文件,编译参数,链接参数……
(二)源代码管理(配置管理)
不断的修改各种源代码
(三)软件测试
一系列的工具和程序来保证程序的正确性
(四)软件的生命周期
需求分析,设计(软件架构),实现(写数据结构和算法),测试,软件发布
(五)用户体验
以上这些也是软件工程的核心部分。
程序是基本功,而软件工程决定了软件的命运。
由纸飞机到波音787和程序、软件、软件工程的一个类比:
航空 | 软件 | 影响(如果成功/失败会如何) | 如何控制过程(怎么一步步提高做事情的质量) |
---|---|---|---|
玩具, 基本知识:纸飞机、航模 | 写程序练习数据结构、算法 | 影响自己,如果失败,会减少对这类知识的兴趣 | 对飞机头哈气,看别的小孩怎么做飞机, 上航模课外小组... |
爱好者的尝试:气球+沙滩椅升空 | 用Javascript,Asp.Net,Ruby写写网站 | 气球升空成功,当地晚报会报道。失败之后,爱好者很快会捡起新的爱好。 | 研究各种工具, 做小实验。 |
先行者的探索:莱特兄弟飞行 | 软件业的创新 | 如果探索失败之后,对于大部分创业者来说,如果还有钱、机会的话,还要继续创新。 | 研究理论, 不断尝试 |
成熟的工业:飞机制造业、民航 | Taobao, Ali-pay, Win7 | 如果一个公司失败了, 很多人会失去饭碗。 | 有完整和严格的过程控制理论和实践。 |
面对软件的成功时,也要面对软件的bug,bug的多少可以直接衡量一个软件的开发效率, 用户满意度, 可靠性, 和可维护性。例如:
软件的开发效率 – 开发过程中bug 太多了,导致软件无法按时交付;
用户满意度 – 用户使用时报告了很多bug,纷纷表示对生活影响很大;
可靠性 – 这个软件经常会崩溃,这个操作系统会死机;
可维护性 – 这个软件太难维护了,修复了一个问题,另一个问题又出来了,也没有足够的文档。
没有一款软件是完美的,或多或少都会存在bug,只是在日复一日的修复bug中完善软件,使得软件更加受欢迎。
看完这篇概论,我也知道一个软件的开发和最终投入使用,是需要团队的合作努力的。而且团队分工明确会使创建软件的效率提高。虽然对一些专业知识一头雾水,但是对于软件工程和软件之间的关系以及软件诞生的过程有了一定的了解。