资源描述
南京邮电大学
《软件体系结构》试验汇报
试验题目 软件体系结构风格之应用
姓名 xxx
学号 xxx
院系 计算机、软件学院
指导老师 周国强
12月18日
一、 试验目标和要求
试验目标:
经过KWIC实例分析,了解和掌握软件体系结构风格设计和实现。
试验要求:
熟练掌握基于主/子程序体系结构风格KWIC关键词索引系统,在此基础上,完成基于面向对象体系架构风格KWIC关键词索引系统设计和实现。选做基于管道过滤体系架构风格KWIC关键词索引系统;选做基于事件过程调用体系架构风格KWIC关键词索引系统。
试验课前完成试验汇报试验目标、试验环境、试验内容、试验操作过程等内容;试验课中独立/团体操作完成试验汇报试验操作、试验结果及结论等内容;每人一台PC机,所需软件Win/XP、UML工具(EclipseUML/ Rose/Visio/StartUML/)、Eclipse/MyEclipse、JDK6.0等。试验课后完成试验汇报心得体会内容,并立即提交试验汇报。
二、 试验课时:2
三、 试验内容及操作步骤
多个软件风格设计和实现之KWIC实例 :
1. 采取主/子程序体系结构风格实现KWIC关键词索引系统
public static void input(String inputFile){
FileReader fr=null;
try {
fr=new FileReader(inputFile);
} catch (FileNotFoundException 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){
FileWriter fw = null;
try {
fw = new FileWriter(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
五.试验小结
经过此次试验,首先对软件体系结构有了更真切了解,尤其是对管道过滤器结构,主程序、子程序结构,抽象数据类型结构,隐式调用这四种结构了解愈加透彻了。同时还对KWIC有个一个认知过程。
在实现上述两种结构过程中,对增强了数据结构掌握,和对面向对象概念深入了解。编程时,碰到了多种大大小小问题,尤其是数据结构定义方面,深刻体会到了数据结构关键性,同时发觉了自己编写代码移植性和编码风格全部不是很好,期望老师给指点。
展开阅读全文