软件工程概述
程序员文章站
2022-05-02 10:40:12
...
计算机科学和数学用于构造软件的模型和算法;
工程科学用于制定规范、设计范型、评估成本及确定权衡;
管理科学用于计划、资源、质量、成本等管理。
什么是软件
^^软件=程序+数据+文件
^程序:计算机可以接收的一系列指令,运行时可以提供所要求的功能和性能。
^数据:使得程序能够适当地操作信息的数据结构。
^文档:描述程序的研制过程、方法和使用的图文资料。
1.软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性;
软件的本质特征
软件的本质特征:复杂性,一致性,可变性,不可见性
^复杂性:
(1)软件运行时函数的调用,对硬件输入指令等。
^一致性:
(1)软件不能独立存在,需要依附于一定的环境(如硬件、网络以及其他软件)。
(2)软件必须遵从人为的惯例并适应已有的技术和系统。
(3)软件需要随接口不同而改变,随时间推移而变化,而这些变化是不同人设计的结果。
^可变性:
(1)软件的优化更新
^不可见性:
(1)软件是一种逻辑实体,不具有空间的形体特征。
(2)开发人员可以直接看到程序代码,但是源代码并不是软件本身。
(3)软件是以机器代码的形式运行,但是开发人员无法看到源代码是如何执行的。
什么是软件工程
1.软件工程:软件工程师系统的、有序的、可量化的方法应用到软件的开发、运营和维护
上的过程。
2.软件工程的目的就是为开发高质量的软件产品提供一个工程框架。
软件工程的基本概念
1.软件工程基本要素
方法:完成软件开发的各项任务的技术方法,回答“怎么做”的问题。
工具:为运用方法而提供的自动的或半自动的软件工程支撑环境。
过程:为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的
工作步骤。
2.软件工程过程
3.软件过程方法
4.软件工程的工具
5.软件开发的基本策略
软件复用:
^构建一个新的系统不必从零做起,直接复用已有的构件进行组装。
^构件是经过反复使用验证的、由其组成的新系统具有较高的质量。
1.软件复用是利用将已有的软件制品,直接组装或者合理修改形成新的软件系统,从而
提高开发效率和产品质量,降低维护成本。
2.软件复用不仅仅是代码复用
• 库函数、类库
• 模板(文档、网页等)
• 设计模式
• 组件
• 框架
分而治之:
^将一个复杂的问题分解成若干个简单的问题,然后逐个解决。
^来源于人们的生活和工作的经验,完全适合于技术领域。
1.软件工程是一项解决问题的工程活动,通过对问题进行研究分析,将一个复杂问题分解
成可以理解并能够处理的若干小问题,然后再逐个解决。
逐步演进:
^软件开发是自底向上逐步有序的生长过程
^小步快跑:每走完一步再调整并为下一步确定方向,直到终点。
1.软件更像一个活着的植物,其生长是一个逐步有序的过程。软件开发应该遵循软件的
客观规律,不断进行迭代式增量开发,最终交付符合客户价值的产品。
优化折中:
^优化:优化软件的各个质量特性,如运行速度、资源利用、用户体验。
^折中:通过协调各个质量特征,实现整体质量的最优。
1.软件工程师应当把优化当成一种责任,不断改进和提升软件质量;但是优化是一个
多目标的最优决策,在不可能使所有目标都得到优化时,需要进行折中实现整体最优。
软件工程的基本原理
1.用分阶段的生命周期计划严格管理
2.坚持进行阶段评审
3.实行严格的产品控制
4.采用现代程序设计技术
5.结果应能清楚地审查
6.开发小组的人员应该少而精
7.承认不断改进软件工程实践的必要性
软件工程方法学
一.传统方法学:
1.概念:
传统方法学也称为生命周期方法学或结构化范性。它采用结构化技术(结构化分析、结构
化设计和结构化实现)来完成软件开发的各项任务、并使用适当的软件工具或软件工程
环境来支持结构化技术的运用。
2.特点:
(1)传统方法学把软件生命周期的全过程依次划分为若干个阶段,然后顺序地完成每个
阶段的任务。
(2)每个阶段的开始和结束都有严格标准,对于任何两个相邻的阶段而言,前一阶段的
结束标准就是后一阶段的开始标准。
(3)在每一个阶段结束之前都必须进行正式严格的技术审查和管理复审。
(4)审查的一条主要标准就是每个阶段都应该交出“最新式的”(即和所开发的软件完全
一致的)高质量的文档资料,从而保证在软件开发工程结束时有一个完整准确的软件配置
交付使用。
(5)采用生命周期方法学可以大大提高软件开发的成功率,软件开发的生产率也能明显
提高。
二.面向对象方法学:
1.概念:
与传统方法相反,面向对象方法把数据和行为看成是同等重要的,它是一种以数据为
主线,把数据和对数据的操作紧密地结合起来的方法。
2.四个要点:
(1)把对象(object)作为融合了数据及在数据上的操作行为的统一的软件构件。
(2)把所有对象都划分成类(class)。
(3)按照父类与子类的关系,把若干个相关类组成一个层次结构的系统。
(4)对象彼此间仅能通过发送消息互相联系。
3.基本原则:
尽量模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界、解决
问题的方法与过程,从而使描述问题的问题空间(也称为问题域)与实现解法的解空间
(也称为求解域)在结构上尽可能一致。
4.优点:
降低了软件产品的复杂性,提高了软件的可理解性,简化了软件的开发和维护工作。
面向对象方法特有的继承性和多态性,进一步提高了面向对象软件的可重用性。
软件危机及其表现
1.概念:
软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件
开发与维护过程中出现了一系列严重问题的现象。
2.表现:
软件的开发成本高
软件质量得不到保证
软件开发难度难以控制
软件维护非常困难
没有适合的文档资料
上一篇: 非对称RSA加密解密
下一篇: 需求分析