软件工程的主要学科有哪些?
马克思主义理论、大学外语、高等数学、大学物理、物理实验、线性代数、概率论与数理统计、程序设计语言、数据结构、离散数学、操作系统、编译技术、软件工程导论、统一建模语言、软件体系结构、软件需求、软件项目管理。
本专业除了基础课之外,还会系统学习离散数学、数据结构、算法分析、面向对象编程、现代操作系统、数据库原理与实现技术、编译原理、软件工程、软件项目管理、计算机安全等课程,其他一些选修课可以根据学生的兴趣选修。
实践环节:毕业实习、课程设计、计算机工程实习、生产实习、毕业设计(论文)。
软件工程的目标是:
在给定成本和进度的前提下,开发具有适用性、有效性、可修改性、可靠性、可理解性、可维护性、可重用性、可移植性、可追溯性、互操作性和满足用户需求的软件产品。追求这些目标将有助于提高软件产品的质量和开发效率,降低维护的难度。
(1)适用性:在不同的系统约束下,软件满足用户需求的难易程度。
(2)有效性:软件系统能最有效地利用计算机的时间和空间资源。各种软件都把系统的时间/空间开销作为衡量软件质量的重要技术指标。在很多场合,追求时间有效性和空间有效性会有矛盾,所以我们不得不为了空间有效性牺牲时间有效性,或者为了时间有效性牺牲空间有效性。时间/空间权衡是一种常用的技术。
(3)可修改性:可以在不增加原系统复杂性的情况下修改系统。它支持软件的调试和维护,这是一个不可企及的目标。
(4)可靠性:能够防止由于概念、设计、结构不完善导致的软件系统故障,并具有恢复由于操作不当导致的软件系统故障的能力。
(5)可理解性:系统结构清晰,能直接反映问题的需求。可理解性有助于控制系统软件的复杂性,支持软件的维护、移植或重用。
(6)可维护性:软件交付使用后,可以通过修改来纠正隐藏的错误,提高性能等属性,使软件产品适应环境的变化。软件维护成本在软件开发成本中占很大比例。可维护性是软件工程中一个非常重要的目标。
(7)复用性:将一个或一组具有相对独立概念或功能的相关模块定义为软构件。可以装配在系统的任何位置,减少了工作量。
(8)可移植性:软件从一个计算机系统或环境转移到另一个系统或环境的容易程度。
(9)可追溯性:根据软件需求向前追溯软件设计和程序,或者根据软件设计和程序向后追溯软件需求的能力。
(10)互操作性:多个软件元素相互通信并协作完成任务的能力。
以上内容参考:百度百科-软件工程;百度百科-软件工程专业