0. 序言:
今天的软件行业百花齐放,万家争鸣!行业内有大量优秀的软件开发 人员,一支优秀的团队也可以在极短的时间内编写出一个炫酷而又复杂的软件。但真正受到用户追捧的爆品又有多少呢?
笔者在硕士期间曾连续两年参加中国“互联网+”创新创业大赛,第一年太过注重技术本身(工科生的局部局限性),组织11人的队伍,花了很大的力气才获得省赛二等奖的成绩;第二年复盘重来,关注于技术背后的产品落地与市场需求,获得了国赛金奖。因此,我认为软件工程专业导论的学习应该让你成为一名携带产品思维的优秀Software Engineer!
1. 软件工程学的诞生:
推动人类科技进步的是懒惰还是勤奋?我认为是危机!软件危机的日益逼近直接催生了软件工程学!
软件危机的定义:在计算机软件开发和维护过程中所出现的一系列严重问题。
典型表现及危害:
1)开发进度估计不准——>导致项目延迟交付!
2)开发成本控制不当——>导致项目取消!
3)用户交流不充分——>导致对已交付软件不满意!
4)未坚持审查-复审-测试全过程等——>导致软件质量靠不住!
5)未撰写详细的文档资料——>导致其他人不易快速复盘理解!
6)软件代码自身书写不优秀——>导致可维护性/可扩展性/可移植性等差!
产生危机的原因:开发团队不具备较强的软件工程学素质,简单的认为软件开发就是写代码并使之运行。
2. 软件工程学的7条金科玉律:
1) 用分周期的生命周期计划严格管理;
2) 坚持进行阶段评审;
3) 实行严格的产品控制
4) 采用现代程序设计技术;
5) 有清晰便于审查的结果;
6) 较优的开发人员结构(少而精);
7) 承认不断改进软件工程实践的必要性。
3. 软件生存/命周期(开发流程):
定义:软件从产生、发展到成熟、直至衰亡的整个过程。
3个周期:软件定义——软件开发——软件运行和维护。
8个阶段:1)问题定义;
2)可行性研究与计划;
3)需求分析;
4)总体设计;
5)详细设计;
6)实现(编码和单元测试);
7)综合测试(集成和确认测试);
8)使用和维护。
4. 软件开发模型:
1)瀑布模型:自上而下;
2)带反馈环的瀑布模型;
3)快速原型模型:用户需求不明确时,先建立初步原型,后期用户提供明确需求,再继续设计软件程序;
4)增量/渐增模型:将软件产品分批交付给用户;
5)螺旋模型;
6)喷泉模型:自下而上;
7)Rational统一过程模型;
8)微软过程模型;
9)敏捷过程与极限编程;
10)……欢迎补充……
5. 参考文献:
[1] 张海藩,吕云翔. 软件工程[M].人民邮电出版社:, 201309.348.
[2] Varun Gupta, Chetna Gupta. Research and Evidence in Software Engineering: From Empirical Studies to Open Source Artifacts[M]. CRC Press:2021-04-15.
[3] F. L. Bauer, J. B. Dennis, W. M. Waite, et al. Software Engineering[M]. Springer, Berlin, Heidelberg:1975-01-01.
本人水平有限,文中错漏缺点在所难免,欢迎私信或评论区留言!
原创不易!鼓励收藏点赞加分享!
#非科班码农的自我救赎!共勉!#
#知乎同号:37yuany#