当前位置:文档之家› 软件体系结构实验二

软件体系结构实验二

南京邮电大学
《软件体系结构》实验报告
实验题目软件体系结构风格之应用
姓名xxx
学号xxx
院系计算机、软件学院
指导老师周国强
2013年12月18日
一、实验目的和要求
实验目的:
通过KWIC实例分析,理解和掌握软件体系结构风格设计与实现。

实验要求:
熟练掌握基于主/子程序体系结构风格的KWIC关键词索引系统,在此基础上,完成基于面向对象体系架构风格的KWIC关键词索引系统设计与实现。

选做基于管道过滤体系架构风格的KWIC关键词索引系统;选做基于事件过程调用体系架构风格的KWIC关键词索引系统。

实验课前完成实验报告的实验目的、实验环境、实验内容、实验操作过程等内容;实验课中独立/团队操作完成实验报告的实验操作、实验结果及结论等内容;每人一台PC机,所需软件Win2003/XP、UML工具(EclipseUML/ Rose/Visio/StartUML/)、Eclipse/MyEclipse、JDK6.0等。

实验课后完成实验报告的心得体会内容,并及时提交实验报告。

二、实验课时:2
三、实验内容及操作步骤
多种软件风格设计与实现之KWIC实例:
1.采用主/子程序体系结构风格实现KWIC关键词索引系统
public static void input(String inputFile){
fr=null;
try {
fr=new (inputFile);
} catch ( e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
BufferedReader br=new BufferedReader(fr);
textLines=new ArrayList<String>();
try {
while(br.ready()){
textLines.add(br.readLine());
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void circularShift(){
shiftedLineIndexes=new ArrayList<String>();
for(int i=0;i<textLines.size();i++){
String orinLine=textLines.get(i);
String sarray[]=orinLine.split(" ");
for(int j=0;j<sarray.length;j++){
String newLine=sarray[j];
if(sarray.length>1){
if(j==sarray.length-1){
for(int k=0;k<(sarray.length-1);k++){
newLine=newLine+" "+sarray[k];
}
}
else{
for(int k=j+1;k<sarray.length;k++){
newLine=newLine+" "+sarray[k];
}
for(int m=0;m<j;m++){
newLine=newLine+" "+sarray[m];
}
}
}
shiftedLineIndexes.add(newLine);
}
}
public static void alphabetize(){
String[] tmpArray = new String[shiftedLineIndexes.size()];
shiftedLineIndexes.toArray(tmpArray);
Arrays.sort(tmpArray);
sortedLineIndexes=tmpArray;
}
public static void Output(String outputAddress){
fw = null;
try {
fw = new (outputAddress);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
BufferedWriter bw=new BufferedWriter(fw);
for(int i=0;i<sortedLineIndexes.length;i++){
try {
bw.write(sortedLineIndexes[i]);
bw.newLine();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
try {
bw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
2.采用面向对象体系架构风格实现KWIC关键词索引系统public void shift(){
ArrayList<String> shiftedLineIndexes=new ArrayList<String>();
for(int i=0;i<ls.size();i++){
String orinLine=ls.get(i);
String sarray[]=orinLine.split(" ");
for(int j=0;j<sarray.length;j++){
String newLine=sarray[j];
if(sarray.length>1){
if(j==sarray.length-1){
for(int k=0;k<(sarray.length-1);k++){
newLine=newLine+" "+sarray[k];
}
}
else{
for(int k=j+1;k<sarray.length;k++){
newLine=newLine+" "+sarray[k];
}
for(int m=0;m<j;m++){
newLine=newLine+" "+sarray[m];
}
}
}
shiftedLineIndexes.add(newLine);
}
}
ls=shiftedLineIndexes;
}
(详细代码于附件)
四、实验环境(实验设备)
Windows 7
Microsoft Office visio 2007
五.实验小结
通过本次实验,首先对软件体系结构有了更真切的了解,尤
其是对管道过滤器结构,主程序、子程序结构,抽象数据类型结构,隐式调用这四种结构的理解更加透彻了。

同时还对KWIC 有个一个认知的过程。

在实现的上述两种结构的过程中,对增强了数据结构的掌握,以及对面向对象概念的进一步理解。

编程时,遇到了各种大大小小的问题,尤其是数据结构定义方面的,深刻体会到了数据结构的重要性,同时发现了自己编写的代码移植性以及编码风格都不是很好,希望老师给予指点。

相关主题