软件工程 (Software Engineering,简称为SE)是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模式等方面。在现代社会中,软件应用于多个方面。典型的软件比如有电子邮件,嵌入式系统,人机界面,办公套件,操作系统,编译器,数据库,游戏等。同时,各个行业几乎都有计算机软件的应用,比如工业,农业,银行,航空,政府部门等。这些应用促进了经济和社会的发展,使得人们的工作更加高效,同时提高了生活质量。
软件开发的不同阶段:
“软件工程”的概念是1968年第一次提出来的。和其他行业相比,软件工程还是一个年轻的产业,它在发展过程中经历了不同的阶段。以同期产生的航空业为例,软件工程也大概分为4个:
一、玩具阶段
纸飞机、航模飞机和真飞机一样,体现了很多基本理论。可以理解为软件工程在最开始雏形的时候只有一定的理论而没有真正的实品。
二、业余爱好阶段
在理论形成了若干年以后,终于有人尝试并且制作出了实品。
三、探索阶段
尝试去改造并且去形成成型的理论
四、成熟的产业阶段
从理论到实品,再从实品变成一个产业
软件工程是什么:
软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。
软件工程包括下列领域:软件需求分析、软件设计、软件构建、软件测试和软件维护。
软件工程和下列学科相关:计算机科学、计算机工程、管理学、数学、项目管理学、质量管理、软件人体工程学、系统工程、工业设计和用户界面设计。
单元测试:
单元测试应该在最基本的功能上验证程序的正确性
单元测试必须由最熟悉代码的人来写
单元测试过后,机器状态保持不变
单元测试要快
单元测试应该产生可重复、一致的结果
独立性
单元测试应该覆盖所有代码路径
敏捷流程:
1.尽早并持续地交付有价值的软件以满足顾客需求
2.敏捷流程欢迎需求的变化,并利用这种变化来提高用户的竞争优势
3.经常发布可用的软件,发布间隔可以从几周到几个月,能短则短
4.业务人员和开发人员在项目开发过程中应该每天共同工作
5.以有进取心的认为项目核心,充分支持信任他们
6.无论团队内外,面对面的交流始终是最有效的沟通方式
7.可用的软件是衡量项目进展的主要指标
8.敏捷流程应能保持可持续的发展。领导、团队和用户应该能按照目前的步调持续合作下去
9.只有不断关注技术和设计,才能越来越敏捷
10.保持简明--尽可能简化工作量的技艺--极为重要
11.只有能自我管理的团队才能创造优秀的架构、需求和设计
12.时时总结如何提高团队效率,并付诸行动
需求分析:
1.获取和引导需求
2.分析和定义需求
3.验证需求
4.在软件产品的生命周期中管理需求
对软件的需求: