软件工程期末复习

第一章

  1. 软件危机:软件开发维护过程中出现的一系列问题。
  2. 软件工程方法学:
    ①传统方法学
    ②面向对象方法学:把数据和对数据的操作紧密地结合起来的方法。
  3. 软件工程三要素:方法,工具,过程。
  4. 软件生命周期:
    三个时期:软件定义,软件开发,运行维护。
    八个阶段:问题定义,可行性分析,需求分析(对整个软件开发影响最大),总体设计,详细设计,编码和单元测试,综合测试,软件维护。
    可行性研究的目的不是解决问题,而是确定问题是否值得去解决。三个方面:技术可行性,经济可行性,操作可行性。

    第二章

  5. 分析建模:数据模型,功能模型,行为模型
  6. 系统流程图:以黑盒子。是概述地描绘物理系统的传统工具。
  7. 数据流图(三个图):原点终点为正方形,具体操作为圆角矩形,数据流为箭头,数据存储为右开矩形。描绘的是数据的功能模型,对数据进行处理。
    pC36mG9.png
    pC36MKx.png
  8. 在软件需求分中会导出一个软件需求规格说明书的文档。
  9. 实体联系图(E-R图):有数据对象(实体有属性),关系(一对一,一对多,多对多)。
    属性用椭圆表示,实体用矩形表示,行为用菱形表示,关系用实线连接。
    pC36tGd.jpg
  10. IPO图:输入,处理,输出图。

第三章

  1. 软件工程使用方法的形式化方法:形式化,半形式化(数据流图),非形式化。
  2. 总体设计(功能)(概要设计或初步设计):概要地说系统该如何实现。
    总体设计过程分为系统升级阶段和结构设计阶段。(总体设计过程包括设计数据库,功能分解,设计软件结构,用户手册)
  3. 模块化:模块和模块之间叫耦合,模块内部叫内聚。(软件要低耦合高内聚)
  4. 面向数据流的设计方法:变换流(从一个到另一个)和事物流(一个到多个)

第六章

  1. 详细设计的结果决定了最终的程序代码的质量。
  2. 结构程序设计有三个:顺序,选择,循环。
  3. 过程设计的工具:PAD图(问题分析图)。

第七章

  1. 编码:汇编和机器语言为低级语言,其他是高级语言。
  2. 测试:黑盒(功能测试),白盒(结构测试)。
    测试步骤:模块测试(单元测试(白盒测试)),子系统测试,系统测试,验收测试(确认测试),平行运行。(测试的目的是找出软件的问题)
    集成测试:子系统测试、系统测试。
    阿尔法测试:是用户在开发者的场所进行测试。
    贝塔测试:用户在一个多或多个客户场所进行测试测试。
    软件需求分析最重要,软件维护花费最多。

第八章、软件维护

  1. 软件维护活动:适应性维护,完善性维护(占比最多),改正性维护,预防性维护。

第九章、面向对象

  1. 面向对象的概念:
  2. 其他概念:类、实例(对象)、方法(封装,继承)、属性,多态性。
    程序:算法+数据结构
    软件:程序、一系列文档
    类是对象的抽象,对象是类的具体化(实例化)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class Student{
private int num;
private String name;
private int age;
private double score;

Student(int num,String name){
this.num = num;
this.name = name;
System.out.println("This is a creating funvtion!");
}

public void setNum(int num){
this.num = num;
}

public int getNum(){
return num;
}
}

public class Test1{
public static void main(String args[]){
Student stu1 = new Student(101,"jack");
Student stu2 = new Student();
stu2.setNum(102);
stu2.setName("Luck")
System.out.println("");
}
}

pC36S8s.png


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  //1+1/2+1/3 ...
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
int n; //定义一个自变量
float sum = 0; //定义sum
scanf("%d", &n); //输入n
for (int i = 1; i <= n; i++)
{
//printf("1/%d\n", i);//显示测试
sum += 1 / (float)i;//整数1/2=0,所以强制转换为浮点型
}

printf("%lf", sum);
return 0;
}


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//1-1/2+1/3
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

#include <stdio.h>
int main()
{
int i, n = 1; //n用来判断正负
int j;
float sum = 0;
scanf("%d", &j);
for (i = 1; i <= j; i++)
{
sum += n * 1.0 / i;
n = -n;
}
printf("sum=%f\n", sum);
return 0;
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# include <stdio.h>
//奇数之和
int main(void)
{
int i;
int sum = 0;
for (i=1; i<101; ++i)
{
if (i%2 == 1)
sum += i; // sum = sum + i;
}
printf("sum = %d\n", sum)

return 0;
}