初步了解软件工程的概念


在通读《构建之法》这本书后,我所产生的三个疑问?

1.在软件开发的过程中,怎样的合作互动才能使软件开发流程不因为意见不一致而拖延进度,需要怎样合理的安排分工?老师上课说所有人有一个共同的目标,就能很好的开发软件,但是人总会有各种各样的想法,各种各样的意见,我们不能无视这些意见,而应该汲取其中优秀的意见改进我们的软件,但是怎么能平衡这些意见?
2.在需求分析阶段,如何能明确的确定我们所分析的需求就是人们所需要的,怎样识别人们所提出的意见是否有效,并且怎样平衡需求和我们的能力还有时间之间的差距?
3.成为软件工程师的第一步是什么?是很好的编写代码的能力或是很高的组织管理能力等等?

1.什么是软件工程

软件工程是把系统的,有序的,可量化的方法应用到软件的开发,运营和维护的过程。

--引用自《构建之法

2.软件工程涉及的领域

-软件需求分析
-软件设计
-软件构建
-软件测试
-软件维护

3.软件的特殊性

-功能性
一组功能及其指定的性质有关的一组属性。适合性、准确性、互用性/互操作性、依从性、安全性。
-可靠性
在规定的一段时间和条件下,软件维持其性能水平有关的一组软件属性。成熟性、容错性、易恢复性。
-可用性
与使用的难易程度及规定或隐含用户对使用方式所做的评价有关的软件属性。易理解性、易学性、易操作性。
-效率
在规定条件下,软件的性能水平和所有资源之间的关系有关的一组软件属性。时间特性、资源特性。
-可维护性
与进行指定的修改所需的努力有关的一组软件熟悉。易分析性、可修改性、稳定性、可测试性。
-可移植性
与软件可从某一环境转移到另一环境的能力有关的一组软件属性。适应性、易安装性、一致性(遵循性)、可替换性。

4.软件工程与计算机科学的区别

计算机科学 软件工程
发现和研究长期的客观真理 短期的实际结果(具体的软件会过时)
理想化的 对各种因素的折衷
确定性、完美、通用性 对不确定和风险的管理、足够好、具体的应用
各个学科独立深入研究,做出成果 关注和应用各个学科的知识,解决问题
理论的统一 百花齐放的实践方法
强调原则性 最好的、成熟的实践方法
形式化、追求简明的公式 在实践中建立起来的灵感和直觉
正确性 可靠性
###5.软件工程的代码规范(这里以C语言为例,不同的语言其代码规范不同) ####1.命名约定 -文件名全部小写,可以加下划线_,但不可以使用横线-。 ####2.类型命名 -类型名称的每个单词的首字母大写,不包含下划线。 ``` // 类和结构体 class Sudoku {...}; class Input {..}; struct SonNode {..}; // 类型定义 typedef hash_map NameMap; // using 别名 using NameMap = hash_map; // 枚举 enum Today {..}; ``` ####3.变量命名 -变量(包括函数参数)和数据成员名一律小写,单词之间用下划线连接。类的成员变量以下划线结尾,但结构体的就不用。 ``` int num_table; // 好 - 用下划线 int numtable; // 中 - 全小写 int numTable; // 差 - 混合大小写 ``` ####4.常量命名 -声明为constexpr或const的变量, 或在程序运行期间其值始终保持不变的, 命名时以 “k” 开头, 大小写混合. ``` const int kDaysInAWeek = 7; ``` ####5.函数命名 常规函数使用大小写混合, 成员函数首字母小写: MyExcitingFunction(),MyExcitingMethod(),myExcitingMethod()。
posted @ 2019-03-03 12:24  闫雪  阅读(470)  评论(4编辑  收藏  举报