软件工程实验4.云大
- 格式:doc
- 大小:70.50 KB
- 文档页数:7
实验难度: A □ B □ C □序号学号姓名成绩指导教师(签名)学期:2017秋季学期任课教师:实验题目:组员及组长:承担工作:联系电话:电子邮件:完成提交时间:年月日一、【实验构思(Conceive)】(10%)(本部分应包括:描述实验实现的基本思路,包括所用到的离散数学、工程数学、程序设计等相关知识,对问题进行概要性地分析)首先输入迷宫数据,在计算机的屏幕上显示一个8行8列的矩阵表示迷宫。
矩阵中的每个数据或为通路(以0表示),或为墙(以1表示),所求路径必须是简单路径,即在求得的路径上不能重复出现同一道块。
假设以栈S记录“当前路径”,则栈顶中存放的是“当前路径上最后一个通道块”。
由此,“纳入路径”的操作为“当前位置入栈”;从当前路径删除前一通道块的操作为“出栈”。
若找到出口,则从栈中弹出数据,在屏幕上显示从入口到出口的路径坐标。
二、【实验设计(Design)】(20%)(本部分应包括:抽象数据类型的定义和基本操作说明,程序包含的模块以及各模块间的调用关系,关键算法伪码描述及程序流程图等,如有界面则需包括界面设计,功能说明等)1、定义坐标(X,Y):struct Coor{int row;int column;int direction;};2、定义方向:struct Move{int row;int column;};3、定义/链表结点:struct LinkNode{Coor data;LinkNode *next;};4、定义栈:class stack{private:LinkNode *top;public:stack();~stack();void Push(Coor data);Coor Pop();Coor GetPop();void Clear();bool IsEmpty();};5.流程图:三、【实现(Implement)】(30%)(本部分应包括:抽象数据类型各操作的具体实现代码、关键操作的具体算法实现、函数实现,主程序实现等,并给出关键算法的时间复杂度分析。
云南大学软件学院综合技能实践——《常用开发平台的安装和使用》实验指导书指导教师:梁宇蔡莉(注意:请先简要阅读实验指导书的要求再开始做实验)第一部分 JSP开发环境的搭建一、实验目的:1.掌握JSP开发环境搭建的具体步骤和操作方法。
2.掌握在JSP开发环境下创建一个简单JSP文件的方法。
3.掌握在JSP中创建虚拟目录的方法。
二、实验内容预习一、JSP概述JSP(Java Server Pages,Java服务器主页)技术为创建显示动态生成内容的Web页面提供了个简捷而快速的方法。
JSP技术的设计目的使得构造基于Web 的应用程序更加容易和快捷,这些应用程序能够与各种Web服务器、应用服务器、浏览器和开发工具共同工作。
JSP的明显优势如下:平台和服务器的独立性。
基于Java的JSP与平台无关,它可以使用任何web服务器(包括Apache、IIS和PWS)。
使用的脚本语言。
JSP使用Java作为它的脚本语言,其面向对象的编程思想较为优秀。
JSP跨平台的可重用性。
J3P组件(Enterprise JavaBeans,JavaBeans)都是跨平台可重用的。
EJB(Enterprise JavaBeans,企业级JavaBeans)组件可以访问传统的数据库,并能以分布式系统模式工作于UNIX 和Windows平台。
多样化和功能强大的开发工具支持。
JSP已经有了许多非常优秀的开发工具而是有许多可以免费获取,且其中行许多开发工具已经可以顺利地运行于多种平台之下。
二、建立JSP的运行环境由于JSP使用Java作为程序设计脚本语言,因此需要建立Java的运行环境。
编译和调试运行Java程序,需要安装JDK(Java Develop Kit,Java开发工具包)。
另外,JSP是基于Web的Java应用程序,因而它需要有特定的运行环境,即解释器。
由于Java语言是跨平台的,所以能解释Java语言的Web服务器与平台无关。
实验四、web服务器套接字编程实验指导1.实验目的:编写一个WEB服务器程序,可以接受来自浏览器的访问,并传输页面(包含多个对象)到浏览器。
掌握Socket编程。
2.实验环境:连入局域网络的主机一台。
3.实验指导:超文本传输协议(HTTP)是位于TCP/IP 协议的应用层,是最广为人知的协议,也是互连网中最核心的协议之一。
HTTP协议是Web浏览器和Web服务器之间的应用层协议,是通用的、无状态的、面向对象的协议。
一个完整的HTTP协议会话过程包括四个步骤:✧连接Web浏览器与Web服务器建立连接,打开一个称为Socket(套接字)的虚拟文件,此文件的建立标志着连接建立成功;✧请求Web浏览器通过Socket向Web服务器提交请求。
HTTP的请求一般是GET或POST 命令(POST用于FORM参数的传递);✧应答Web浏览器提交请求后,通过HTTP协议传送给Web服务器。
Web服务器接到后,进行事务处理,处理结果又通过HTTP传回给Web浏览器,从而在Web浏览器上显示出所请求的页面;✧关闭连接应答结束后Web浏览器与Web服务器必须断开,以保证其它Web浏览器能够与Web 服务器建立连接。
4.实验分析,回答下列问题。
运行课本中Webserver.java程序。
查找资料,写出程序源代码,并加上必要的注释。
如能改写该程序,附上修改后的源代码。
附上运行的截图。
代码及注释如下:import java.io.*;//引入Java输入输出包import .*; //引入Java网络包import java.util.*;//导入Java实用工具库class Webserver{public static void main(String arg[]) throws Exception{String requestMessageLine;String filename;//创建一个监听socketServerSocket listenSocket=new ServerSocket(6789);//等待客户机发起连接while(1==1){Socket connectionSocket=listenSocket.accept();//创建一个从socket中读文本行的流BufferedReader inFromClient=newBufferedReader(new InputStreamReader(connectionSocket.getInputStream ()));//创建一个向socket中写文本行的流DataOutputStream outToClient=newDataOutputStream(connectionSocket.getOutputStream());//读取客户机发送的一行文本requestMessageLine=inFromClient.readLine();//字段串解析StringTokenizer tokenizerLine=new StringTokenizer(requestMessageLin e);//如果客户端的请求方式为get方式if(tokenizerLine.nextToken().equals("GET")){filename=tokenizerLine.nextToken();//获得文件名if(filename.startsWith("/")==true)filename=filename.substring(1);//新建文件System.out.println("The request filename is:" + filename);//输出字符串,内容为客户端请求的文件名File file=new File(filename);int numOfBytes=(int)file.length();//新建文件输入流FileInputStream inFile=new FileInputStream(filename);byte[] fileInBytes=new byte[numOfBytes];//将文件流信息读入byte数组inFile.read(fileInBytes);// 服务端输出信息outToClient.writeBytes("HTTP/1.0 200 Document Follows\r\n"); //不同的文件类型所对应的头文件格式不同if(filename.endsWith(".jpg"))outToClient.writeBytes("Content-Type:image/jpeg\r\n");if(filename.endsWith(".gif"))outToClient.writeBytes("Content-Type:image/gif\r\n");outToClient.writeBytes("Content-Length:"+numOfBytes+"\r\n");outToClient.writeBytes("\r\n");outToClient.write(fileInBytes,0,numOfBytes);connectionSocket.close();}//错误的请求方式else System.out.println("Bad Resquest Message");}实验结果截图如下:实验四为JA V A的编程实验,实验代码已经提供,大家只需要读懂此程序,运行此程序查看结果,或做稍加修改就可以了。
课程:数据结构实验学期:2014-2015学年第一学期任课教师:专业:信息安全学号:姓名:成绩:实验5 图基础实验一、实验目的1.掌握图的存储结构及其遍历。
二、实验软硬件环境(CPU、OS、IDE):三、实验任务(要求写出核心代码,并对运行结果截图)1)使用邻接矩阵和邻接表储表示分别实现如下给定的图1、图2、图3所示图的物理存储结构。
2)在1)所建立的图形存储结构上分别实现深度优先搜索遍历和广度优先搜索遍历,并给出遍历结果(序列)。
图3 有向图实验代码:#include<stdio.h>#include<stdlib.h>#define MAXVEX 20#define OK 1#define ERROR 0#define OVERFLOW -1#define INFINITY 65535#define QueueSize 20 //队列中最大元素个数typedef int QElemType; //队列的元素的类型typedef int VertexType;typedef int EdgeType;typedef enum{False,True}Boolean; //Boolean是布尔类型,其值是ture或false Boolean visited[MAXVEX]; //访问标志的数组。
typedef struct{VertexType vexs[MAXVEX];EdgeType arc[MAXVEX][MAXVEX];int numVertexes,numEdges;} MGraph; //邻接矩阵。
typedef struct EdgeNode //边表结点。
{int adjvex;struct EdgeNode *next;}EdgeNode;typedef struct VertexNode //顶点表结点。
{int data;EdgeNode *firstedge;}VertexNode,AdjList[MAXVEX];typedef struct{AdjList adjlist;int numVertexes,numEdges; //图中当前顶点数边数。
云南大学软件学院实验报告姓名:杨林燕学号:20111120106 班级:软件工程日期:2013.10.18 成绩:JAVA实验四一、实验目的:Fundamental Programming Structures in Java: Strings二、实验要求:1.Write a program called String1.java and do the following: Create a String object that accepts input from the user. Referencing the JDK docs, execute 2 different methods on the String. Print the results of the methods.2.Write a program called StringBuffer1.java that does the following: Create a StringBuffer object. Referencing the JDK docs, execute 2 different methods on the StringBuffer. Print the results of the methods.3.Write a program called StringTokenizer1.java that accepts a string, looks for commas within the string, and breaks the string up into the parts separated by the comma. For example, the string "Kunming, Yunnan, China"would return three strings:String1 = "Kunming"String2 = "Yunnan"String3 = "China"三、实验内容:1.String1.javaimport java.util.Scanner;class String1{public static void main(String[] args){Scanner s=new Scanner(System.in);System.out.println("请输入字符串:");String c=s.nextLine();int i=c.length();int n=c.hashCode();System.out.println("字符串长度为 "+i);System.out.println("字符串的哈希码为 "+n);}}2.StringBuffer1.javaclass StringBuffer1{public static void main(String[] arg){StringBuffer a=new StringBuffer("杨林燕");a.reverse();System.out.println("逆序显示:"+a);a.deleteCharAt(0);System.out.print("删除第一个字符:"+a);}}3.StringTokenizer1.javaimport java.util.Scanner;import java.util.StringTokenizer;class StringTokenizer1{public static void main(String[] args){Scanner a=new Scanner(System.in);System.out.println("输入用,隔开的字符串:");String s=a.next();System.out.println("被,隔开的字符串为:");StringTokenizer b=new StringTokenizer(s,",");int n=b.countTokens();for(int i=0;i<n;i++){String c=b.nextToken();System.out.println("String"+(i+1)+" ="+c);}}}三、实验总结:通过本次实验,了解到了类String,StringBuffer和StringTokenizer的含义和构造方法,体会到了类的方法的丰富。
实验报告课程:软件工程实验任课教师:指导教师:序号:专业:学号:姓名:成绩:实验二软件需求1.找出对于计算机系统来说四种可能要定义的需求,并简要描述之答:可能要定义的需求如下:(1)功能需求:对系统应该提供的服务和功能、如何对输入做出反应以及在特定条件下的行为的描述。
在某些情况下,功能需求可能还要明确声明系统不应该做什么。
(2)非功能需求:指不直接与系统具体功能相关的一类需求。
换言之,它们定义了对系统提供的服务或功能的约束。
包括可靠性、存储空间、时间约束、开发过程的约束、标准等。
(3)用户需求:从用户的角度来描述系统功能和非功能需求,以便让不具备专业技术方面知识的用户看懂。
它是用自然语言、图表和直观的图形来叙述关于系统需要提供那些服务以及系统操作受到那些约束。
(4)系统需求:比用户需求更详细的需求描述,是系统实现的基本依据。
详细地给出系统将要提供的服务以及系统所受到的约束,系统需求应该陈述系统应该做什么而不包括系统应该如何实现。
2.讨论用自然语言定义用户需求和系统需求存在的问题。
使用一个小例子说明格式化的自然语言能否帮助避免一些表述困难答: (1)用自然语言定义用户需求和系统需求存在的问题:①自然语言的解释依赖于读者和作者对于同一个词语有一致的解释,因为自然语言存在二义性,因此会造成语义理解的偏差;②一个自然语言的需求描述随意性很大,能以完全不同的方式来描述相同的事物,用户很难判断什么时候需求是一样的,什么时候需求是不一样的;③不存在一个简单的方法,使自然语言书写的需求模块化,这种形式描述的需求极难发现相关性;④用自然语言书写的需求描述容易引起误会,而这些误会可能在软件过程的后期才发现,这时再去解决问题费用将会相当高。
(2)例子说明:例如,“Shoes must be worn”有两种解释:“鞋子必须被穿”,“一个人必须要穿鞋”,这样就存在了二义性。
如果使用格式化的自然语言,我们可以说“One people wear pair of shoes”,这样就可以避免二义性。
云南大学软件学院实验报告课程:综合技能实践2——常用数据库的安装与调试学期: 2015秋季学期任课教师:朱艳萍金鑫专业:软件工程学号:姓名:成绩:综合技能实践2——常用数据库的安装与调试第一部分MySQL数据库的安装和使用一、实验目的:1.掌握MySQL数据库环境搭建的具体步骤和操作方法。
2.掌握启动和运行MySQL的方法。
3.掌握使用SQL语句创建数据库、表及向表中插入记录的方法。
二、实验内容和步骤1、首先,查看本台机器的C盘根目录下是否有mysql的文件夹,如果没有,请到(FTP服务器上) 下载mysql-4.0.20a-win.zip或者mysql-5.1.51-win32文件,解压后进行安装。
2、进入安装目录,然后切换到bin文件夹下,双击运行命令mysqld.exe:3、打开命令窗口,然后切换到C:\mysql\bin文件夹下,并输入如下命令:C:\mysql\bin>mysql -u root -p回车后出现Enter password: 提示信息,继续敲入回车符,就进入到MySQL的工作界面:mysql>。
成功地连接后,可以在mysql>提示下输入QUIT (或\q)随时退出:mysql> QUITBye3、在mysql>提示符输入select version(), current_date();命令,系统将显示什么信息?4、下面,在mysql>提示下输入命令SHOW DATABASES; 系统将显示什么信息?(该命令用来显示MySQL中已创建的数据库名称)5、在mysql>提示下输入命令use test; ,系统给出提示信息Database changed,表示已经转到数据库test中。
6、在mysql>提示下输入命令show tables; ,系统给出的提示信息是什么?7、下面,将创建我们实验用的数据库、表和表中的记录。
数据库名称:stud+自己学号的最后4位,如:stud1011。
云南大学软件学院实验报告课程名称:软件工程学期:2009年秋季学期指导老师:学号:姓名:班级:软件工程日期:成绩:实验一软件工程基础【实验目的和要求】1了解软件工程基本概念2掌握软件生命周期3掌握各种软件过程模型4掌握项目管理基本活动和过程5掌握软件伦理相关概念[实验内容]1什么是软件工程?Software engineering is the application of a systematic, disciplined(守规则的), quantifiable(定量的) approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software.(^ a b SWEBOK executive editors, Alain Abran, James W. Moore ;editors, Pierre Bourque, Robert Dupuis. (2004). Pierre Bourque and Robert Dupuis. ed. Guide to the Software Engineering Body of Knowledge - 2004 Version. IEEE Computer Society. p. 1-1. ISBN 0-7695-2330-7..)Software engineering is an engineering discipline that is concerned with all aspects of software production.(Ian Sommerville ,Software Engineering, 8th edition, p6)2什么是软件过程?A software process is a set of activities whose goal is thedevelopment or evolution of software product.(Ian Sommerville ,Software Engineering, 8th edition, p8)A software process is defined as a set of interrelatedactivities.An activity transforms inputs into outputs. An activityunder a process is a set of cohesive内聚的 tasks. A task is expressed in the form of action.(ISO/IEC 12207)Software Process is Software too.( Osterweil 1997)A software development process is a structure imposed on the development of a software product. Synonyms也就是说include software life cycle and software process.(From Wikipedia, the free encyclopedia)3什么是软件过程模型,具体包含哪些?Software process model is a simplified representation of a software process that present one view of that precess.(Ian Sommerville ,Software Engineering, 8th edition, p8)Software process model is an abstract representation of a software process.Software process description is a detailed represention of a software process.(Tong Li, An Approach to Modelling Software Evolution Process,p10)The software process models include the informal, the semi-formal and the formal models. (Tong Li, An Approach to Modelling Software Evolution Process,p111)Idiographic Software process models :The waterfall modelEvolutionary developmentComponent-based software engineering4软件工程成本包含那几部分?Roughly development costs ,testing costs.But distribution of costs depends on the development model that is used.For example:Waterfall model:Specification, Design, Development, Integration and testing.Iterative development:Specification, Iterative development, System testing.Component-based software engineering:Specification, Development, Integration and testing.For long-lifetime systems:System development, System evolution. 5软件伦理包含哪些内容。
云南大学软件学院实验报告序号:姓名:学号:专业:软件工程日期:2015.12.21 成绩:实验四命令模式的运用一、实验目的:命令模式将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象,命令模式也支持可撤销的操作。
在熟悉命令模式相关理论知识的基础上,使用命令模式实现图片处理程序。
二、实验要求:使用命令模式实现图片处理程序,要求如下:1.图片处理程序要有3张图片。
2.每张图片至少有3种操作。
3.实现类似遥控器的菜单,动态的选择对图片进行的处理。
4.要有“撤消操作”,撤消操作要可以撤销至最后一步。
1、设计并绘制该程序的类图;2、依照设计的类图使用Java语言编写代码,并实现该程序;3、除了核心的模式相关类实现外,提供测试环境,按照难度高低,分别是:a)控制台程序,Client硬编码初始化模式和测试环境,运行结果文本输出;b)控制台程序,Client初始化测试环境,并根据用户输入运算,运行结果文本输出;c)设计并实现用户UI,Client初始化测试环境,并根据用户在UI控件上的输入运算,运行结果文本输出;三、实验内容:实验类图:实验代码:1 DrawControl类public class DrawControl {ArrayList<DrawCommand> dcommand=new ArrayList<DrawCommand>();public void addCommand(DrawCommand dc){dcommand.add(dc);}public void removeCommand(DrawCommand dc){for(int i=0;i<dcommand.size();i++)if(dcommand.get(i).getClass().equals(getClass())){dcommand.remove(i);}}public void executeCommand(DrawCommand dc){for(int i=0;i<dcommand.size();i++)if(dcommand.get(i).getClass().equals(getClass())){dcommand.get(i).execute();}}public void undoCommand(DrawCommand dc){if (dcommand.size() > 1) {dcommand.get(dcommand.size() - 1).undo();dcommand.remove(dcommand.size() - 1);} elseSystem.out.println("Here is end, you can't undo");}}2 DrawCommand接口类package design4;interface DrawCommand {public void execute();public void undo();}3 Circular类public class Circular extends JPanel {Ellipse2D e =null;private int w,h;int f;public Circular(int w,int h){this.w=w;this.h=h;} //画圆型public void drawCircular(){e=new Ellipse2D.Double(w/2,h/4,50,50);f=1;repaint();} //画椭圆形public void drawEllipse(){e=new Ellipse2D.Double(w/2,h/4,20,70);f=1;repaint();} //画实心圆public void drawSolidRound(){f=2;e=new Ellipse2D.Double(w/2,h/4,50,50);repaint();}public void paintComponent(Graphics g){super.paintComponent(g);if(f==1){Graphics2D g2=(Graphics2D) g;g2.draw(e);}else{Graphics2D g2=(Graphics2D) g;//g2.draw(e);g2.setPaint(Color.RED);g2.fill(e);}}}4 Circular Command类package design4;public class CircularCommand implements DrawCommand{ Circular circular;public CircularCommand(Circular c){circular=c;}public void execute() {circular.drawCircular();}public void undo() {// TODO Auto-generated method stub}}5 DrawJFrampackage design4;import java.awt.Container;import java.awt.GridLayout;import java.awt.Panel;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JLabel;public class DrawJFram extends JFrame implements ActionListener{JComboBox comboBox,comboBox2,comboBox3;String[] str={"圆形","椭圆","实心圆"};String[] str2={"方形","正方形","长方形"};String[] str3={"三角形","等腰直角三角形","等边三角形"};public DrawJFram (){super(" ");this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setcomputerWindow();}private void setcomputerWindow() {// TODO Auto-generated method stub Container ct=this.getContentPane();Container ct=this.getContentPane();ct.setLayout(new GridLayout(6,1));Panel p1=new Panel();p1.add(new JLabel("圆形:"));comboBox=new JComboBox(str);p1.add(comboBox);p1.add(new JLabel("方形:"));comboBox2=new JComboBox(str2);p1.add(comboBox2);p1.add(new JLabel("三角形:"));comboBox3=new JComboBox(str3);p1.add(comboBox3);comboBox.addActionListener(this);comboBox2.addActionListener(this);comboBox3.addActionListener(this);ct.add(p1,"North");}public void actionPerformed(ActionEvent e) {if(e.getSource().equals(comboBox)){if(comboBox.getSelectedItem().equals("圆形")){Circular circular=new Circular(100, 100);this.add(circular,"South");circular.drawCircular();this.setVisible(true);}else if(comboBox.getSelectedItem().equals("椭圆")){Circular circular=new Circular(30, 70);this.add(circular,"South");circular.drawEllipse();this.setVisible(true);}else if(comboBox.getSelectedItem().equals("实心圆")){Circular circular=new Circular(50, 50);this.add(circular,"South");circular.drawSolidRound();this.setVisible(true);}}else if(e.getSource().equals(comboBox2)){if(comboBox2.getSelectedItem().equals("方形")){Rectangle rectangle=new Rectangle(100, 100);this.add(rectangle,"South");rectangle.drawhighRectangle();this.setVisible(true);}else if(comboBox2.getSelectedItem().equals("长方形")){ Rectangle rectangle=new Rectangle(100, 100);this.add(rectangle,"South");rectangle.drawlongRectangle();this.setVisible(true);}else if(comboBox2.getSelectedItem().equals("正方形")){ Rectangle rectangle=new Rectangle(100, 100);this.add(rectangle,"South");rectangle.drawsquare();this.setVisible(true);}}else if(e.getSource().equals(comboBox3)){if(comboBox3.getSelectedItem().equals("三角形")){Triangle triangle=new Triangle(500, 10);this.add(triangle,"South");triangle.drawTriangle();this.setVisible(true);}else if(comboBox3.getSelectedItem().equals("等腰直角三角形")){ Triangle triangle=new Triangle(500, 30);this.add(triangle,"South");triangle.drawIsoscelesTriangle();this.setVisible(true);}else if(comboBox3.getSelectedItem().equals("等边三角形")){ Triangle triangle=new Triangle(500, 50);this.add(triangle);triangle.draweQuilateralTriangle();this.setVisible(true);}}}}6 pictureMainpackage design4;import java.awt.Dimension;import java.awt.Toolkit;public class pictureMain {public static void main(String[] args) {// TODO Auto-generated method stubToolkit kit=Toolkit.getDefaultToolkit();Dimension screenSize=kit.getScreenSize();int screenHeihgt=screenSize.height;int screenWidth=screenSize.width;DrawJFram drawJFram=new DrawJFram();drawJFram.setSize(screenWidth,screenHeihgt);drawJFram.setVisible(true);}}实验结果四、实验总结:我经过本次命令模式的实验,通过自己动手编代码,是自己理解命令模式机制,并且知道命令模式有以下的优点:适用性:想要实现回调函数功能,想要在不同的时刻指定、排列和执行请求,需要支持取消和改变日志操作;效果:命令模式将调用操作的对象与知道如何实现该操作的对象解耦,Command是头等的对象。
实验报告课程:软件工程实验任课教师:指导教师:序号:专业:学号:姓名:成绩:实验五软件检验和有效性验证1.概述软件检验和有效性验证的基本概念,并阐述两者区别。
答: (1)软件检验是对系统的各种表示形式,如:需求文档、设计图和程序源代码等,进行分析和检查,这个过程贯穿软件开发的所有阶段。
软件检验不需要运行程序,在程序完成之前就可以进行检验,检验的对象是系统的一些表示形式,可能是系统模型,系统描述或高级语言的代码,检验的过程中充分利用所开发系统的知识和相应的系统源表示形式的语义来发现错误。
软件检验是一种有效的错误检测技术。
(2)有效性验证使用测试数据对软件的实现进行运行检查,查看系统的输出内容以及运行行为是否符合要求。
有效性验证可以在程序实现阶段进行,也可以在系统完全实现了以后进行,在实现阶段的验证是要检验软件的行为是否如设计者想象的形式。
(3)软件检验的作用是检查软件是否符合它的描述,应该检查系统是否满足了它所定义的功能和非功能的需求。
而有效性验证却是一个更一般的过程,应该保证软件满足客户的期待,它不局限于检查系统是否符合它的描述,而是要说明软件是否最满足了客户的要求。
所以,在符合描述和符合客户需求之间软件检验和有效性验证是存在明显区别的。
2.讨论并回答单元测试、集成测试、发布测试、压力测试、性能测试、组件测试、测试案例设计和自动化测试的基本概念和基本方法。
答:(1)单元测试:又称为模块测试,检查各个程序单元能否正确的实现详细设计说明中的模块功能、性能、接口和设计约束等要求,单元测试应对模块内所有重要的控制路径设计测试用例,以便发现各个模块可能存在的各种错误。
基本方法:采用白盒测试技术、采用单元测试工具:静态分析工具、代码规范审核工具、测试数据生产工具、测试框架工具、测试结果比较工具、测试度量工具。
(2)集成测试:又称为组装测试或联合测试,在单元测试的基础上,将所有的程序模块进行有序的、递增的测试。
云南大学软件学院实验报告课程名称:软件工程学期:2009年秋季学期指导老师:学号:姓名:班级:软件工程日期:成绩:试验四软件开发【实验目的和要求】1掌握敏捷软件开发、极限编程、软件原型构造等快速软件开发方法2掌握软件复用的基本概念和相关方法3掌握设计模式在软件复用和快速软件开发过程中的基本应用方法4掌握基于构件的软件工程方法【实验内容】通过查看资料,各小组在组长的带领下讨论下列问题,在归纳总结后以书面形式提交报告。
1阐述敏捷软件开发、极限编程、软件原型构造方法的基本原理,并举例说明实际使用案例。
2结合第14章内容,回答怎样用快速软件开发方法实现对气象台系统。
3结合第14涨给出的气象台系统,为一个应用族抽象其体系结构,该应用族能够处理远程监控和数据收集。
4讨论构件与web service之间的区别。
5设计一个可复用构件,使其实现教材中给出的LIBSYS系统的搜索特征。
6分别讨论Sun的Java平台、Microsoft的COM+、IBM的CORBA技术各自的优缺点。
7讨论并回答软件演化与软件维护之间的关系。
8讨论并回答软件演化中最困难的工作是什么,当前学术界、产业界对这些困难取得了那些研究进展。
9解释Lehman定律的基本原理,试图说明在什么情况下该定律不再适用。
【实验结果】1.敏捷软件开发、极限编程、软件原型构造方法的基本原理,并举例说明实际使用案例答:1.Rapid软件开发:迅速变化的商业环境,因为,企业必须应对新的机遇和竞争。
企业可能愿意接受较低的高质量软件的基本功能,如果快速交付是可能的。
不断变化的环境,因为,往往是不可能得出一个稳定的,系统一整套的要求。
因此,瀑布的发展模式是不切实际的,是发展的基于迭代方法规范和交付的唯一途径提供软件迅速。
2.Prototyping:对于一些大型系统,增量迭代开发和提供可能不切实际,这是尤其是当多个团队在不同的地点工作。
原型,其中一个实验系统开发作为制订的要求的基础上可以使用。
该系统是弃系统的规格已经商定。
3。
极限编程:极限编程,也许是最著名,使用最广泛的敏捷方法。
极限编程(XP)需要对迭代发展的极端做法。
如新的版本可能会兴建每天数次;增量向客户提供每2个星期,所有的测试都必须为建立和运行的身材只接受测试运行成功。
2.结合第14章内容,回答怎样用快速软件开发方法实现对气象台系统。
答:14章中的气象系统是通过面向对象设计的,所以由我所知道的一些关于UML 建模的快速开发软件,首先定义好类,接口,定义好类中或者接口中的方法,然后通过类图将各个类的关系表现出来,然后通过软件内部的功能,将代码生成出来,这样,气象系统的框架就出来了,然后只要填写好各个类中的方法,就可以使气象系统顺利的运行起来,完成对气象系统的实现。
3.结合第14张给出的气象台系统,为一个应用族抽象其体系结构,该应用能够处理远程监控和数据收集。
上面的图片显示的气象站结构:正如图片显示通讯服务器是为远程气象站负责沟通交流与气象局,以及负责偏远气象站的观测,如杂草风速,风向的雨流,地面温度计温度天气情况等等。
他们收集的天气状况的数据,然后发送数据的各种数据处理服务器。
当数据处理服务器接收数据,将处理数据,然后生成一个天气报告,它也将发送气象报告气象局的服务器。
工作人员可以访问服务器和气象局的天气报告获得的信息。
最后在工作人员公布的天气资料外。
4.讨论构件与web service之间的区别。
答:组件比更为抽象对象类,可以被看作是独立的服务供应商。
组件提供服务,而不考虑该组件的地方正在执行或编程语言。
一个组件是一个独立的可执行文件的实体,可以由一个或多个可执行文件的对象了,该组件的接口是所有互动出版和通过发布的接口是,一个软件组件是一个合同的组成,指定的接口和明确的情况下只能依赖单位。
一个软件组件可以部署独立,并须组成的第三方。
一个组件提供的服务是通过一个接口和所有组件交互的可考虑通过该接口进行。
Web Services issued by the company to complete their specific business needs of online application services, or application software to other companies through the Internet to access and use the online service, it is a general model for building applications that can support network in any communication in the implementation of the operating system to run; it is a new web application that branch, is self-contained, self-describing, modular applications that can publish, locate, through the web call. Web Service is an application component, it islogical to provide data for other applications and services. The applicationthrough the network protocol and provisions of a number of standard data format (Http, XML, Soap) to access the Web Service, through the Web Service within the implementation to obtain the required results. Web Service can perform from simple requests to complicated business processes of any functionality.它们之间的区别在于1)一旦购买的一个组件,它是由Web服务,而用户拥有的始终是由供应商所拥有。
这一点很重要,因为这意味着业主没有交给服务更改的控制-如果它改变(或消失),则这可能对用户的不良后果。
零件,但是,当用户决定的较新版本的使用。
2)为服务支付的款项,是为使用户不需要购买昂贵的组件,它只是偶尔使用的利用率。
3)组件相互作用可以比使用网络服务的更有效的协议,使元件更适合于高通量/高性能应用。
4)有一个对几个相互竞争的服务组件单一的标准水平,使服务的互操作性是(应该是)要好得多。
5.设计一个可复用构件,使其实现教材中给出的LIBSYS系统的搜索特征。
Answer: Library Database Server Database Server's core function is to realize the full text of unstructured information retrieval and unified storage.The so-called full-text search refers to the mass of unstructured information quickly and accurately obtain the information users need.Library Database Server Full-text database system for the pursuit of high precision rate while providing 100% recall means, the output can be sorted field values or related degree, as well as a joint multi-field sorting, and support the classification of search results.At the same time, Library Database Server to achieve Native-XML database functionality with powerful semi-structured information processing and retrieval capabilities.FunctionUnstructured, structured data, unified management, support XML data management, to achieve holographic XML indexes, XML as a complete data type, for XML documents do not need the same break as the relational database system, XML data storage, but direct support for the XML holographic index, to achieve any marking and marking of any property can be used as a search target.Library full-text databases cluster server is based on a number of physical TRS Database Server on a distributed management system that supports data distribution and load balancing in two ways, and supports a combination of two methods applied to meet the user massive data and high - concurrent environment distributed search, retrieval performance and reliability requirements.Full-text database server cluster load balancing between the database server Unity within the group database server dispatching a service request is only sent to the group as a database server, a full-text database server group contains at least one database server.TRS Database Server distributed between groups searchUser requests a search of their need to include the distribution of the target audience, sent to some or all of the database server group, TRS Database Cluster Server to retrieve the full text of the result set returned to the user merge processing.6.分别讨论Sun的Java平台、Microsoft的COM+、IBM的CORBA技术各自的优缺点。