2013年度 シラバス大学院

SE教育研究領域 (ソフトウェアエンジニアリング)

SEC01 Theory and Practice of Software Engineering I

概要

Our current software engineering methods and techniques have made us much better at building large and complex systems than we were. However, there are still too many projects that are late, are over budget and do not deliver the software that meets the customer’s needs. There is, therefore, still a pressing need for software engineering education. This course covers many current topics of interest in software engineering. Some of the topics covered are formal methods to specify requirements of software systems, software design strategies, and evaluation of processes, products, and resources.

目的

The course can be useful for undergraduate and graduate students. It may be used in general software engineering, software specification, software design and management. The objective of the course is to impart knowledge to students about methods in software development including basic and advanced topics. The methods range from how to precisely specify software requirements to how to evaluate the methods and their products and required resources. This is achieved in three parts: first, lectures are given on several current topics of interest; second, students are asked to make a presentation on a topic interesting to them; and third, students are given a programming project to design and implement a system using the Object-Oriented (Java) or Mobile Programming Environment.

日程及びテーマ

The course lectures are covering the following topics:

Part 1. The Software Process
- Process: A Generic View
- Prescriptive Process Models
- Agile Development

Part 2. Software Engineering Practice
- Practice: A Generic View
- System Engineering
- Requirements Engineering

Part 3. Software Design Strategies
- Architectural Design
- Component-Level Design
- Design with UML
- Client-server Design
- Service-oriented Design
- Human-centric Design

Part 4. User Interface Design
- Design issues
- The user interface design process
- User analysis
- User interface prototyping
- Interface evaluation


The experimental part of this course includes the following topics:
?Presentation Topic: Students have to present advanced material based on reading of current software engineering journals and professional magazines.
?Engineering Topic: The goal of this topic is in developing and testing the simple project using the Object-Oriented (Java) or Mobile Programming Environment.

教科書

1.Software Engineering Theory and Practice by S. L. Pfleeger, Publisher: Prentice Hall.
2.Software Engineering, 6-8th editions by Ian Sommerville, Publisher: Addision-Wesley.
3.Software Engineering & Testing: An Introduction by B.B. Agarwal, S. P. Tayal, M. Gupta. Publisher:
4.Software Engineering: A Practitioner's Approach, 6th edition by Roger S. Pressman, Publisher: McGraw-Hill
5.Lecture notes distributed by the instructor (Lecture notes have been prepared from the above textbooks and from recently published papers in IEEE Transactions on Software Engineering, IEEE Computer, and IEEE Software)

先修科目及び重要な関連科目

nowledge of object-oriented concepts is necessary. Students should complete the Java and/or C Programming 1 and 2 courses and Software Engineering 1.

評価方法

1.Two tests (25 points each),
2.Engineering Topic (20 points)
3.Presentation Topic (30 points)

参考(授業ホームーページ、図書など)

1.Object-Oriented Software: Design and Maintenance Author(s): L. F. Capretz and M. A. M. Capretz Publisher: World Scientific
2.Understanding CORBA, by R. Otte, P. Patrick, M. Roy, publisher: Prentice Hall PTR
3.Quality Software Management, by Gerald M. Weinberg, publisher: Dorset House Publishing


SEC02 Theory and Practice of Software Engineering II

概要

This is the second part of the Course on Theory and Practice of Software Engineering. Our current software engineering methods and techniques have made us much better at building large and complex systems than we were. However, there are still too many projects that are late, are over budget and do not deliver the software that meets the customer’s needs. There is, therefore, still a pressing need for software engineering education. This course continues the course Theory and Practice of Software Engineering I and covers many current topics of interest in software engineering. Some of the topics covered are formal methods of software maintenance, evaluation of processes, products, and resources. It also introduces advanced Software Design Patterns.

目的

The course can be useful for undergraduate and graduate students. It may be used in general software engineering, software specification, software design and management. The objective of the course is to impart knowledge to students about methods in software development including basic and advanced topics. The methods range from how to precisely specify software requirements to how to evaluate the methods and their products and required resources. This is achieved in three parts: first, lectures are given on several current topics of interest; second, students are asked to make a presentation on a topic interesting to them; and third, students are given a programming project to design and implement a system using the Object-Oriented (Java) or Mobile Programming Environment.

日程及びテーマ

The course lectures are covering the following topics:

Part 1. Software Testing
- Software Testing Strategies
- Software Testing Techniques
- Component testing
- Test case design
- Acceptance, Installation, Performance, Functional Testing
- Test automation
- Product Metrics for Software
- Software Testing Tools and Environments

Part 2. Software Evolution
- The System Change
- Measuring and Problems of Software Maintenance
- Maintenance Technique and Tools
- Software Rejuvenation

Part 3. Advanced Topics in Software Engineering
- Formal Methods
- Component-Based Software Engineering
- Security Engineering
- Mobile Software Engineering
- Software For Embedded Systems

The experimental part of this course includes Engineering Topic:
The goal of this topic is in developing and testing the simple project using the Object-Oriented (Java) or Mobile Programming Environment.

教科書

1.Software Engineering Theory and Practice by S. L. Pfleeger, Publisher: Prentice Hall.
2.Software Engineering, 6-8th editions by Ian Sommerville, Publisher: Addision-Wesley.
3.Software Engineering & Testing: An Introduction by B.B. Agarwal, S. P. Tayal, M. Gupta. Publisher:
4.Software Engineering: A Practitioner's Approach, 6th edition by Roger S. Pressman, Publisher: McGraw-Hill
5.Lecture notes distributed by the instructor (Lecture notes have been prepared from the above textbooks and from recently published papers in IEEE Transactions on Software Engineering, IEEE Computer, and IEEE Software)

先修科目及び重要な関連科目

Student should have knowledge in Object-oriented programming. The course of Theory and Practice of Software Engineering I is also required.

評価方法

1.One test (50 points each),
2.Engineering Topic (50 points)

参考(授業ホームーページ、図書など)

1.Object-Oriented Software: Design and Maintenance Author(s): L. F. Capretz and M. A. M. Capretz Publisher: World Scientific
2.Understanding CORBA, by R. Otte, P. Patrick, M. Roy, publisher: Prentice Hall PTR
3.Quality Software Management, by Gerald M. Weinberg, publisher: Dorset House Publishing


SEC03 Software Engineering for Internet Applications

概要

Software industry is growing very fast. It is getting impossible to study the tools in detail to implement new software projects. Students should manage a large amount of tools in order to figure out how to start using them knowing only a little at the beginning and how to get detailed information about features when they need them. In the other words, students have to understand key ideas and they have to be able to apply them in practice.

One of the key tendencies in the software development area is a priority of WEB applications. The corresponding branch of software engineering is growing very fast. We are facing increasing demands for professionals who can design large Web systems.

The aim of this course is to study current concepts and methods for Internet application engineering.

目的

We assume that the students know how to write a computer program and debug it. We assume that students like programming. The course is intended for students who want to understand and apply in practice the technological basis of modern Internet applications.

日程及びテーマ

The main topics covered in the course are as follows:

Part 1: Basic Technologies

Lecture 1;
XHTML
Cascading Style Sheets
The Basics of JavaScript

Lecture 2:
JavaScript and HTML Documents
Dynamic documents with JavaScripts

Lecture 3:
Java Applets
XML
VoiceXML
JSON

Lecture 4:
The Basics of Perl
Perl for CGI Programming

Lecture 5:
Servlets and Java Server Pages
The Basics of PHP

Lecture 6:
Introduction to Ajax
Database Access though the Web

Part 2: Security for Internet Applications

Lecture 7:
Encryption
Digital Signatures
Certificates

Lecture 8:
Secure Client - Server Interaction
State-based Attacks
Language-based Attacks

Lecture 9:
Client Security Issues
Attacking the Client

Lecture 9:
Service Provider Security Issues
Attacking the Server

Part 3: A Web Engineering Process

Lecture 10:
Requirements Engineering for Internet Applications

Lecture 11:
Modeling Internet Applications

Lecture 12:
Internet Application Architecture

Lecture 13:
Technology-aware Internet Application Design

Lecture 14:
Testing Internet Applications

Lecture 15:
Operation and Maintenance of Internet Applications

Lecture 16:
Usability of Internet Applications

Lecture 17:
Performance of Internet Applications

Part 4: Application Examples

Lecture 18:
Google APIs, Yahoo APIs
Personal Search Engine

Lecture 19:
Semantic-aware Retrieval Tool

Lecture 20:
Future Directions

教科書

Roger S. Pressman and David Love, Web Engineering: A Practitioner’s Approach, McGraw-Hill, 2009.
Eve Andersson, Philip Greensun, Andwer Grumer, Software Engineering for Internet Applications, MIT, 2006.
Mike Andrews, James A. Whittaker, How to Break Web Software, Addiso-Wesley, 2006.
Robert Sebesta, Programming World Wide Web, Person, 2007.

先修科目及び重要な関連科目

Knowledge of object-oriented concepts is necessary. Students should complete the Java Programming 1 and 2 courses and Software Engineering 1 and Web Programming courses.

評価方法

The final grade will be calculated based on the following contributions:
Exercises ? 40%,
Quizzes during lectures ? 25%,
Final examination ? 35 %.

参考(授業ホームーページ、図書など)

Course Web page: http://web-int.u-aizu.ac.jp/~vkluev/courses/SEIA/


SEC04 Programming Strategies and Software Development Tools

概要

目的

日程及びテーマ

教科書

先修科目及び重要な関連科目

評価方法

参考(授業ホームーページ、図書など)


SEA01 並列・分散・インターネットコンピューティング

概要

Parallel and Internet computing is a science concerning in solving a problem by giving parts of the problem to many computers to solve, and then combining the solutions for the parts into a solution for the problem. The course focuses on comparative and historical analysis of different approaches to parallel and Internet computing. Some specific topics of Software Engineering related to the reliability and accuracy of parallel computations are discussed. We show also different parallel programming paradigms including SIMD, Message Passing and Shared Memory Programming as well as Client-Server and Distributed Objects Architectures.

目的

At the end of this course, the student should be able to:
- Estimate the quality of parallel and distributed algorithms and programs,
- Distinguish advantages and difficulties of parallel and Internet computing,
- Explain some details of data parallel processing,
- Know how to design coarse- and fine-grained parallel algorithms,
- Manage the Internet application design,
- Show experience in WEB-based parallel programming.

日程及びテーマ

1.Introduction in Modern High-Performance Computing
2.Metrics of Parallel Programs and Algorithms
3.Network Topologies and Properties
4.Individual and Collective Operations on Networks
5.Classifications of Parallel Programming Models
6.Parallel Programming Models: SIMD-programming
7.Distributed Programming Models: Multiprocessor architectures
8.Client-server Programming Models
9.Parallel Computing and Accuracy of Results
10.Advanced Distributed Computing Paradigms
11.Cell Programming Platform (optional)
12.WEB-based High-Performance Computing (optional)

教科書

1.Materials collected from books, journals and proceedings papers and provided by the instructor
2.Parallel and Distributed Computing, by Claudia Leopold, John Wiley and Sons, Inc, 2001
3. Scalable Parallel Computing, by K. Hwang, Zh. Xu, McGraw-Hill, 1998

先修科目及び重要な関連科目

General computer organization, algorithms and data structures, Software Engineering I and II as well as a high-level language like C, Java, etc.

評価方法

Students should be prompt for lectures, labs, and exams. Programming assignments must be turned in by the stated date and time. To pass this course, all the requirements must be satisfactorily completed.
The course final grade includes the following parts
1.Two short quizzes (20 points each)
2.Programming Project (60 points)

参考(授業ホームーページ、図書など)

1.http://sealpv0.u-aizu.ac.jp/moodle/ - Course management system.
2.Computer Networks and Internets, by D. E. Comer, Prentice-Hall, 2001.
3.Parallel Processing in Cellular Arrays, by Ya. Fet, Taunton, UK, Research Studies Press, 1995.


SEA02 分散システムの原理と実例

概要

目的

日程及びテーマ

教科書

先修科目及び重要な関連科目

評価方法

参考(授業ホームーページ、図書など)


SEA04 宣言的プログラミング

概要

目的

日程及びテーマ

教科書

先修科目及び重要な関連科目

評価方法

参考(授業ホームーページ、図書など)


SEA05 OpenCLによる並列プログラミング

概要

目的

日程及びテーマ

教科書

先修科目及び重要な関連科目

評価方法

参考(授業ホームーページ、図書など)


SEA06 Model-Driven Software Development

概要

ソフトウェア開発の歴史は、抽象度向上の歴史である。機械語から始まり、アセンブラー言語、第三世代言語と抽象度が高まるにしたがって、ソフトウェア開発の生産性も向上した。しかし、近年主流になりつつJavaといえども、手続きの内容をテキスト形式で記述するという点では、1950年代に登場したFORTRANと本質的には変わっておらず、抽象度の向上による生産性の向上以上に要求が多様化複雑化している現在では、更なる抽象化が求められている。この点からもモデルに基づく開発の重要性は増している。
この講義では、オブジェクト指向分析の基礎を学ぶとともに、組み込みソフトウェアの開発からビジネス用アプリケーションの開発までの幅広い範囲でモデル駆動開発について解説する。また、これらの技術を理解するために必要なオブジェクト指向分析やUMLなどのモデリング手法についても解説する。
本講義では、モデル駆動開発のための要素技術として、次のような内容について学習する。
UML、MOF、OCL、モデルとメタモデル、モデル変換、モデル実行
*講義は日本語で行われます。

目的

将来ソフトウェア開発に携わる者にとっては必修の知識であるオブジェクト指向分析やそのために必要なモデリング技術の基礎を習得する。

日程及びテーマ

第一日 オブジェクト指向モデリングの基礎
第二日 UMLとオブジェクト指向分析
第三日 業務アプリケーションとモデリングおよびクラスモデル
第四日 ビジネスプロセスモデリングおよびユースケースモデル
第五日 ソフトウェアファクトリーおよびシーケンス図
第六日 組み込みソフトウェアとモデリングおよび状態遷移図
第七日 新しい技術
第八日 課題発表

教科書

毎時間、資料を配布します

また以下のソフトウェアをインストールしたPCを持参すること。
http://www.eclipse.org/downloads/packages/eclipse-modeling-tools/keplerr

先修科目及び重要な関連科目

評価方法

出席状況、課題提出状況、最終日の発表内容に基づいて総合的に評価します

参考(授業ホームーページ、図書など)

「MDA モデル駆動アーキテクチャ」
# 出版社: エスアイビーアクセス (2003/11)
# ISBN-13: 978-4434038136

「UML/MDAのためのオブジェクト制約言語OCL 第2版」
# 出版社: エスアイビーアクセス; 第2版 (2004/12)
# ISBN-13: 978-4434055423


SEA07 Requirements Engineering

概要

This course focuses on advanced problem domain and requirements analysis and engineering, including requirement based solution system characteristics design, documentation, validation, and management. During the course students will acquire technical, analytical, and communication skills by assuming different roles in tackling practical engineering problems. Fundamental concepts, methods, and techniques for development and analysis of project requirements are also studied. The following main topics are covered by the course:
?Requirements engineering rationale in the scope of software lifecycle and the different activities it involves
?Requirements elucidation techniques including interviews, meetings, questionnaires, reverse engineering, simulations, and cognitive techniques
?Communication, negotiation, and conflict resolution skills and strategies
?Analyzing, scoping, evolving, and modeling of requirements; architectural implications
?Importance of nonfunctional requirements
?Security and privacy of information: concerns and threats

目的

At the end of the course students will:
?know how requirements are defined and classified
?be able to distinguish and handle standard types of requirements
?understand requirements development and analysis approaches
?be able to develop requirements (functional and nonfunctional, formal and informal, etc.)
?be aware of inter-component influences and environment impact on system solutions

日程及びテーマ

?Importance of Requirements
?Requirements Activities in the System Life Cycle
?General Process of Requirements Development
?Types of Requirements
?System Requirements Development
?Requirements Analysis
?Environment of a Problem
?Dependences Analysis
?Gathering Requirements
?Practices for Requirements Development and Management
?Requirements Quality and Quality Improvement
?Knowable Requirements and Manageable Risk
?Project Development
?Project Evaluation
?Final Evaluation and Examination

教科書

Lecture notes and a list of publications related to the course objectives will be distributed by the instructor

先修科目及び重要な関連科目

?Software Engineering
?Technologies of Programming

評価方法

Requirements development and analysis project class work (40%), homework (30%), and examination (30%)

参考(授業ホームーページ、図書など)

1.Ralph R. Young. The Requirements Engineering Handbook. Artech House, 2004, www.artechhouse.com
2.Elizabeth Hull, Kenneth Jackson, Jeremy Dick, Ian Sommerville. Software Engineering. Addison Wesley.


SEA08 Software Project Management

概要

This course introduces students to state of the art software project management practices. Roles of software project members are discussed, respective management techniques are introduced, and tasks and responsibilities of a software project manager are clarified. Advanced approaches and styles of management suitable for complex software projects are taught and students are encouraged to participate in both computer simulated and real software project management situation. The following main topics are included in the course:
?Role and function of project management in software project lifecycle
?Modern methodologies for software design, development, testing and implementation
?Risks, issues, and critical factors pertinent to successful technology projects
?Techniques for planning and management of technology projects
?Methods for managing software development teams
?Software project planning and tracking technologies

目的

At the end of the course students will:
?be familiar with software system lifecycles and related management activities
?understand the specific issues, risks, and factors, critical for the successful implementation of technology projects
?know the basic principles and methodologies of software design, development, testing and implementation
?master the basic of software development team management

日程及びテーマ

?Software Project Management Processes
?Software Project Management Knowledge Areas
?Software Project Cost and Time Management
?Software Project Quality Management
?Software Project Risk Management
?Software Project Human Resources Management
?Final Evaluation and Examination

教科書

Lecture notes and a list of publications related to the course objectives will be distributed by the instructor

先修科目及び重要な関連科目

?Software Engineering
?Technologies of Programming

評価方法

Project development and analysis class work (40%), homework (30%), and examination (30%)

参考(授業ホームーページ、図書など)

1.Ian Sommerville. Software Engineering. Addison Wesley
2.Gary R. Heerkens. Project Management. McGraw-Hill


SEA09 Creativity Development: Approaches and Examples

概要

There is a myth that only artists, composers, writers, singers,
actors, inventors and others of these types are creative people.
There is also a myth that creativity is mysterious and uncontrollable
burst of inspiration available only to a lucky few; the creative
process is considered the same as the process of spiritual growth,
etc. In fact, IT specialists are the most creative persons: they
understand people needs, applications, corresponding abstract models
and transforms knowledge into design and implementations.

In this course, creativity is considered as ability to create new and
useful things and/or to add new and useful features for existing
things. Each person has talent to innovate, but to demonstrate the
creativity, it is necessary to be in good physical and mental
conditions, possess special knowledge, and regularly practice in
the use of the knowledge. The course provides some approaches and
methods to develop creativity based on ideas of dualism of processes
and phenomena, alternative actions, multiple views of objects, and a
concept of good classifications.

目的

They are to enhance student ability to innovate, that is "to see what
no one else is seeing," "to think what no one else is thinking,"
and "to understand why people miss their chances." The objectives also
include recommendations for 1) understanding existing things and their
specific features and getting some possible hints about non-existing
things or new features, and for 2) how to predict usefulness of the
things and features.

日程及びテーマ

Course themes include:
- New examples of creativity,
- Overcoming inability to use familiar objects in an unfamiliar way,
- Acquiring knowledge to prepare mind,
- Preparing mind for the feeling of passion,
- Other strategies for creativity,
- Self-explanatory components for programming,
- Multimedia hieroglyphs for communication,
- 3D Kanji for preserving traditions and developing new cultural assets.

教科書

Handouts will be provided in lectures

先修科目及び重要な関連科目

1. Final test (45 points),
2. Technical report on “Classification of Objects” (40 points)
3. Attendance lectures and participation in discussions (15 points)

評価方法

参考(授業ホームーページ、図書など)

-Scott Isaksen, Brian Dorval, and Donald Treffinger, Creative approaches
to problem solving, Third Edition, SAGE Publications, 2011,
-Edward deBono, Serious Creativity, PROFILE BOOKS, 2005
-Michael Michalko, Cracking Creativity, Ten Speed Press,1998
-Tom Wujec, Five Star Mind, Doubleday Canada, 1995


SEA10 Model-Driven Software Development II

概要

目的

日程及びテーマ

教科書

先修科目及び重要な関連科目

評価方法

参考(授業ホームーページ、図書など)


SEA11 Software Engineering for Space Programs

概要

目的

日程及びテーマ

教科書

先修科目及び重要な関連科目

評価方法

参考(授業ホームーページ、図書など)


SEA12 Object-Oriented Software Engineering

概要

※This course is not offered in AY 2013

目的

日程及びテーマ

教科書

先修科目及び重要な関連科目

評価方法

参考(授業ホームーページ、図書など)


SEA13 Parallel Languages & Multimedia Tools

概要

Usually parallel languages and parallel programming are considered as means and activity to extract maximum performance from some computer architecture. Growing role of multi-core and many-core systems makes users spend a lot of energy and time for technical aspects of application algorithm implementations. This essentially decreases their abilities in developing application models, performing necessary experiments and creating practical systems. In this course a new programming methodology based on a new multimedia programming environment is presented. Within this environment, programs are created as information resources with multiple clarifications and human performance, rather than hardware performance, is a focus. The course is supported by practical exercises helping in understanding new forms of modeling and programming in pictures.

目的

They are to give students a vision of modeling/programming systems of a new generation where pictures and moving pictures (animation) are used as super-characters for representing features of computational algorithms and data structures. They are also to explain how a cluster of visual languages and supportive tools are combined into a uniform framework to 1) integrate programming experience/knowledge and forms of their representation, and to 2) generate executable codes from picture-based specifications.
In addition, students will get a basic skill of programming in *AIDA (Star-AIDA) language within Filmification modeling (F-modeling) environment and learn how introducing new super-characters representing a set of parallel activity coordinators (for Master-workers schemes, Send-receive, Data-flow, Pipeline and Statechart alliances) enhances intelligent aspects of the environment in general and allows obtaining special features required by applications.

日程及びテーマ

Course themes include:
-Overview and classification of parallel computer architectures and programming languages; examples of programming constructs for Message-Passing Interface and other conventional languages.
-Visual languages and programming in pictures.
-Algorithmic CyberFrames, CyberScenes and CyberFilm; Languages of Integrated view, Algorithmic Dynamics, Command and Interface views.
-Algorithms as activities in 4-dimential space-time; super-characters to declare space data structures, their substructures and slices; super-characters to define traversal schemes on space data structures.
-Super-characters to define computational activity units (formulas, etc.); annotations for variables and language constructs; folding/unfolding techniques for formulas.
-Examples of *AIDA programs; comparisons of *AIDA and conventional language constructs.
-Executable diagrams for master-workers schemes, send-receive, data-flow, pipeline and statechart alliances.
-Template programs behind super-characters and automatic code generation.
-Interface panels of F-modeling environment and their features.
-*AIDA programs as information resources of a new type.

教科書

1.Handouts of Lectures
2.Tutorials at http://aida.u-aizu.ac.jp/aida/tutorial.jsp

先修科目及び重要な関連科目

None

評価方法

1. Final test (45 points),
2. Technical report on *AIDA programming (40 points)
3. Attendance of lectures and participation in discussions (15 points)

参考(授業ホームーページ、図書など)

Books:
1.R. Bitter, T. Mohiuddin, N. Nawrocki, LabVIEW: Advanced Programming Techniques, CRC Press, 2007.
2.B. P. Douglass, Real-Time UML, Second Edition, Addison-Wesley, 2000.