软件工程师指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来解决软件问题的工程,其目的是提高软件生产率、提高软件质量、降低软件成本。
软件工程由方法、工具和过程三个部分组成:
方法是完成软件工程项目的技术手段,它支持整个软件生命周期,
工具是人们在开发软件的活动中智力和体力的扩展和延伸,它自动或半自动地支持软件的开发和管理,支持各种软件文档的生成
软件过程贯穿于软件开发的各个环节,管理人员在软件工程过程中,要对软件开发的质量、精度、成本进行评估、管理和控制,包括人员组织、计划跟踪与控制、成本预算、质量保证和配置管理等。
软件的需求分析是指用户对新系统在功能、行为、性能、设计约束等方面的期望。
软件需求就是系统必须完成的事以及必须具备的品质,需求是多层次的,包括业务需求、用户需求和系统需求。
业务需求:是指反映企业和客户对系统高层次的目标要求,通常来自项目投资人、购买产品的客户、客户单位的管理人员、市场营销部门或产品策划等。
用户需求:是用户的具体目标,或用户要去系统必须能完成的任务。
系统需求:是从系统的角度来说明软件需求,包括功能需求、非功能需求和设计约束等。
质量功能部署是一种将用户要求转化为软件需求的技术,其目的是最大限度地提升软件工程过程中用户的满意度。为了达到这个目的,QFD将软件分为三类,分别是常规需求、期望需求和意外需求
常规需求:用户认为系统应该做到的功能或性能?实现越多用户会越满意。
期望需求:用户想当然认为系统应具备的功能或性能,但并不能正确描述自己想要得到的这些功能或性能需求。
意外需求:也称兴奋需求,是用户需求范围外的功能或性能,实现这些需求用户会更高兴,但不实现也不影响其购买的决策。
需求获取是一个确定和理解不同的项目干系人的需求和约束的过程。
常见的需求获取方式包括用户访谈、问卷调查、采样、情节串联板、联合需求计划等。
需求分析将提炼、分析和审查已经获取到的需求,以确保所有的项目干系人都明白其含义并找出其中的错误、遗漏或其他不足的地方。需求分析的关键在于对问题域的研究与理解。
一个好的需求应该具有无二义性、完整性、一致性、可测试性、确定性、可跟踪性、正确性、必要性等特征。
使用SA方法进行需求分析,其建立的模型的核心是数据字典,围绕这个核心,由三个层次的模型,分别是数据模型、功能模型和行为模型。
在实际工作中,一般使用实体联系图(E-R图)表示数据模型,用数据流(DFD)表示功能模型,用状态转化图(STD)表示行为模型。E-R图主要描述实体、属性,以及实体之间的关系;DFD从数据传递和加工的角度,利用图形符号通过逐层细分描述系统内各个部件的功能和数据在它们之间的传递情况,来说明系统所完成的功能;STD通过描述系统的状态和引起系统转换的事件,来表示系统的行为,指出作为特定事件的结果将执行哪些动作(例如,处理数据等)。
OOA模型包括用例模型和分析模型,用例是一种描述系统需求的方法,使用用例的方法来描述系统需求的过程就是用例建模,分析模型描述系统的基本逻辑结构,展示对象和类如何组成系统(静态模型),以及他们如何保持通信,实现系统行为(动态模型)。