2020年度 シラバス学部

ソフトウェア・エンジニアリング関連科目

2020/08/03  現在

科目一覧へ戻る
開講学期
/Semester
2020年度/Academic Year  2学期 /Second Quarter
対象学年
/Course for;
3年
単位数
/Credits
3.0
責任者
/Coordinator
クリュエフ ヴィタリー
担当教員名
/Instructor
クリュエフ ヴィタリー, イエン ニール ユーウェン
推奨トラック
/Recommended track
履修規程上の先修条件
/Prerequisites

更新日/Last updated on 2020/01/30
授業の概要
/Course outline
Nowadays, the Web is not only the source of information for the end users. Companies migrate more of their business activities to Web based systems. We are facing increasing demands for professionals who can design large Web systems. Web engineering is a relatively new term in computer science. It can be defined as a discipline of systematic development of Web applications. The aim of this course is to study current concepts and methods for Web application engineering.
授業の目的と到達目標
/Objectives and attainment
goals
The aim of this course is to study current concepts and methods for Web application engineering.
授業スケジュール
/Class schedule
The main topics covered in the course are as follows:

Lecture 1
Introduction
Lecture 2
A Web engineering process
Lecture 3
Communication
Lecture 4
Introduction to Rails on Ruby technology
Lecture 5
Ruby vs. other languages  
Lecture 6
Web application architecture
Lecture 7
Building an Application
Lecture 8
Finding your way around Rails
Lecture 9
Designing and implementing an example application utilizing Ruby on Rails: a Depot Application
Lecture 10
Task: Validation
Lecture 11
Task: Catalog display
Lecture 12
Tasks: Cart creation and A smarter cart
Lecture 13
Universal Design for Web Applications: Google's Approach
Lecture 14
Where to go?

See the course page below for details and updates.
教科書
/Textbook(s)
Agile Web Development with Rails 4 by Sam  Ruby, Dave Thomas and Devis Hansson, The Pragmatic Bookshelf, 2013.

Puntambekar A.A., Web Engineering, Technical Publications, 2012.

Mazin S. Al-Hakeem, Fundamentals of Web Engineering: An Engineering Approach to Develop Web Services, Contents and Environment under Standards Specification of Web Design, Lambert Academic Publishing, 2012..
成績評価の方法・基準
/Grading method/criteria
The final grade will be calculated based on the following contributions:
Exercises - 50%,
Active Participation during lectures - 15%,
Final examination - 35 %.
履修上の留意点
/Note for course registration
Formal prerequisites: JAVA Programming II
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
A course coordinator Prof. Vitaly Klyuev has practical working experience. He was working as a  Senior researcher in an international consortium of the INCO Copernicus Program of the Commission for European Communities, Brussels, Belgium. He was involved in the development of the distributed search system running on the Web. He has teaching experience of different courses related to programming for more than 30 years.

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

Class:Lecture,Exercises


科目一覧へ戻る
開講学期
/Semester
2020年度/Academic Year  3学期 /Third Quarter
対象学年
/Course for;
3年
単位数
/Credits
3.0
責任者
/Coordinator
バーラ サバシュ
担当教員名
/Instructor
バーラ サバシュ, イエン ニール ユーウェン
推奨トラック
/Recommended track
履修規程上の先修条件
/Prerequisites

更新日/Last updated on 2020/01/31
授業の概要
/Course outline
• Data modeling
• Conceptual models, such as- 1. Entity-relationship, 2. UML diagrams, 3. Semi-structured data
• Spreadsheet models
• Relational data models•
• Semi-structured data model (expressed using DTD or XML Schema, JSON, Candle Markup)
• Object-oriented models (cross-reference PL/Object-Oriented Programming)
授業の目的と到達目標
/Objectives and attainment
goals
1. Comparison of appropriate data models, including internal structures, for different types of data.
2. Concepts in modeling notation, such as - 1. Entity-Relation Diagrams , 2. UML , 3. how are the notations utilized.
3. Terminology used in the relational data model.
4. Basic principles of the relational data model.
5. Using the modeling concepts and notation of the relational data model.
6. Main concepts of the OO model such as object identity, type constructors, encapsulation,  inheritance, polymorphism, and versioning.
7. The differences between relational and semi-structured data models.
8. Compare a semi-structured equivalent (\in DTD or XML Schema) for a given relational schema.
授業スケジュール
/Class schedule
Lecture 1 - 3
   -XML, XHTML, JavaScript, Perl, Perl CGI programming,   
   -Common Gateway Interface (CGI), Alternative technologies,
    Web Server Configuration
   -HTTP, Proxies, Content Navigation
Lecture 4- 6
   -CGI (environment, variables, output)
   -Server side scripting with PHP, Web Services
   -Server side scripting with JSP
Lecture 7-9
   -Security: Handling user input, encryption, data storage
   -Data Persistence: files, DBMS, Database Interface
   -Middleware and XML
Lecture 10 - 14
   -Design: models, debugging of CGI Applications
   -Application Development environments
教科書
/Textbook(s)
Programming the World Wide Web, (by Sebesta) 8th edition, 2014
   Pearson International Edition.  
成績評価の方法・基準
/Grading method/criteria
Mid-term Examination(30 points);
Two short quizzes (40 points (20 points each))
Web Programming Assignments(30 points)
履修上の留意点
/Note for course registration
Algorithms and Data Structures, Computer Programming, Java Programming,
Database Systems
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
Book, Course material, slides and notes recommended by the instructor(s).


科目一覧へ戻る
開講学期
/Semester
2020年度/Academic Year  4学期 /Fourth Quarter
対象学年
/Course for;
3年
単位数
/Credits
3.0
責任者
/Coordinator
ヴァジェニン アレクサンダー
担当教員名
/Instructor
ヴァジェニン アレクサンダー, 渡部 有隆
推奨トラック
/Recommended track
履修規程上の先修条件
/Prerequisites

更新日/Last updated on 2020/01/31
授業の概要
/Course outline
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 reuse, software maintenance, software maintenance models, and evaluation of processes, products, and resources. It includes Advanced Treatment of Selected Software Engineering issues: Software Maintenance, Software Configuration Management, Software Re-engineering, Managing People, Critical Systems Development, User Interface Design and Evaluation, Emerging Technologies like Visual Programming, Security Engineering, and other advanced topics including student presentation topic as well as student engineering topic.
授業の目的と到達目標
/Objectives and attainment
goals
The objective of the course is to impart knowledge to students about methods in software development. 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) and Visual Programming paradigm.
授業スケジュール
/Class schedule
Lecture 1: The Nature of Software Engineering
Topics to study:
- How did software engineering become a term?
- Is there a good technical solution to software development problems?
- How and why are agile methods considered more people-affirming?
- Compare software engineering with other professions.

Lecture 2: Revisioning Software
Topics to study:
- Collaborative development problems,
- Revision control,
- VCS terminology,
- Collaborative development and conflict resolution.

Lecture 3: The Human Factors in Software Engineering
Topics to study:
- Human Diversity;
- Limits to Thinking;
- Knowledge Modeling;
- Personality Types;
- Human Factors Engineering.

Lecture 4: The Managing People and Team Work
Topics to study:
- Selecting and Motivating Staff
- Ego-less Programming
- Managing Groups
- The People Capability Maturity Model

Lecture 5-6: User Interface Design and Evaluation
Topics to study:
- User Interface Design Principles
- User Interaction Styles
- Information Presentation
- GUI Features
- Message System Features
- System Documentation
- User Interface Design Process
- Interface Evaluation

Lecture 7: Visual Programming Systems
Topics to study:
- Terminology
- Classification and Theory
- A Review of Visual Programming Systems

Lecture 8: Midterm

Lecture 9: Software change: Maintenance and Architectural Evolution
Topics to study:
-Program evolution dynamics
-Software maintenance
-Architectural evolution

Lecture 10: Software re-engineering
Topics to study:
-Source code translation
-Reverse engineering
-Program structure improvement
-Program modularization
-Data re-engineering

Lecture 11: Critical systems development
Topics to study:
-Dependable processes
-Dependable programming
-Fault tolerance
-Fault tolerant architectures

Lecture 12: Software Security Engineering
Topics to study:
-Security concepts
-Security risk management
-Design for security
-System survivability

Lecture 13: Code Writing
Topics to study:
-Organization and Purposes
-Quality requirements
-Algorithmic complexity
-Methodologies
-Measuring language usage
-Debugging

Lecture 14: Student presentations
教科書
/Textbook(s)
1.Software Engineering, 5-9th editions by Ian Sommerville, publisher: Addision-Wesley
2.Human Aspects of Software Engineering by J.E. Tomayko and O. Hazzan, Charles River Media Inc., 2004
3. User Interface Design and Evaluation by D. Stone, C. Jarrett, M.Woodroffe, Sh. Mincha
4. Lecture notes distributed by the instructor will be developed from materials collected from books, journals and proceedings papers.
成績評価の方法・基準
/Grading method/criteria
Your final grade includes the following parts
1). All Lab Exercises: 50 points in total including:
* Presentation Topic: 20 points
* Engineering Topic: 30 points
     - All reports submitted: 20 points
     - The GUI Interface designed:10 points
2). Midterm Test: 25 points
3). Final Exam: 25 points
履修上の留意点
/Note for course registration
Software Engineering I, Programming I and II, Java Programming I and II

Formal prerequisites:SE3 Software Eng. I
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
The course instructor Alexander Vazhenin has practical working experience. He worked for the Computer Center of Siberian Division of the Russian Academy of Sciences for 15 years where he was involved in R&D of software design and operating systems. Based on his experience, he can teach the basics of Software Engineering.

1. Course WWW-site: http://sealpv2.u-aizu.ac.jp/
2. Software Engineering: A Practitioner's Approach, 4th edition by Roger S. Pressman, publisher: McGraw-Hill
3. B.B. Agarwal, S.P. Tayal, M. Gupta, Software Engineering & Testing, Computer Science Series.

Class:Lecture,Exercises


科目一覧へ戻る
開講学期
/Semester
2020年度/Academic Year  前期 /First Semester
対象学年
/Course for;
4年
単位数
/Credits
3.0
責任者
/Coordinator
吉岡 廉太郎
担当教員名
/Instructor
吉岡 廉太郎, 川口 立喜
推奨トラック
/Recommended track
履修規程上の先修条件
/Prerequisites

更新日/Last updated on 2020/01/29
授業の概要
/Course outline
履修学生でチームを組み、顧客の求めるソフトウェアの開発を行うことを通してソフトウェア工学に対する理解を深める授業です。
授業では、顧客から実際に注文を受け、一つの注文を一つの学生チームが受け持ちます。通常5~10名程度のチームになります。各チームは、顧客の要望を聞き取るヒアリングから始め、開発すべきソフトウェアの要件を決定するところから始めます。その後、設計、開発、テストの各開発工程を実施し、第14回授業内で開発作業の概要および成果物の発表を行い、顧客に納品します。
各チームには産業界から派遣されるコーチが付き開発実務のアドバイスを行います。毎週教員・コーチに進捗を報告するとともに、必要に応じて顧客と打合せを持ちます。開発の各行程は成果物(ドキュメント類)で管理し、各工程を終了する度に提出していきます。顧客も参加する中間レビューと最終レビューでは、作業時間数、成果物の量、質などを定量的に分析して報告を行います。
顧客によって定められた機能と品質を満たし、顧客にとって最良のソフトウェアを提供するため、創造と努力の限りを尽くします。そのため、必要となる新たな知識・技術を身につけたり、なんども修正したりするため、授業外の作業時間は当然発生します。チームを構成する全学生の自主的で主体的な取り組みが必須です。
授業の目的と到達目標
/Objectives and attainment
goals
1. 一定の(要求された)機能と品質を満足するソフトウェアを開発するにあたっての課題に気づき、それらを解決する基本的な手法を学ぶ。
2. リソース(人、物、時間など)が限られた中でソフトウェアを完成するためにプロジェクト管理が必要であることを実感し、ソフトウェア工学で学んだ各工程(要求定義・分析、設計、開発、テスト)の手法を実践する。
3. 異分野の技術にまたがる問題の特定や正確な情報伝達など、現実世界で直面する流動的な環境への迅速な対応の必要性を体験し、それに対応するための手法を学ぶ。
履修学生は、上記1~3を通して、比較的大規模で、実用に耐えうるソフトウェアの開発の課題について理解することができる。
授業スケジュール
/Class schedule
各回の授業(3コマ)では、
1. 各チームによる進捗報告(各10分)
2. 進捗報告に対するフィードバック
3. その週の作業の進め方と留意点に関する講義
4. チーム毎に顧客との打合せ
を行います。

第1回:プロジェクト立ち上げ, 計画立案
チーム内での役割分担を決め、プロジェクト管理システムの準備、顧客からの注文依頼を聞き、要求定義以降の開発プロセスを実行するためのプロジェクト計画を立案する
第2回:現地調査
 顧客の要求を理解し、課題についての理解を深めるため、現場の調査を行う。(顧客の都合等により時期は前後する)
第3回:要件定義
 課題から要求を正確に把握し、明確な要求として整理し、システム化する範囲を顧客と合意する。
第4回:要件定義
課題から要求を正確に把握し、明確な要求として整理し、システム化する範囲を顧客と合意する。積極的にプロトタイプを作成してイメージの共有とすり合わせを行う。
第5回:要件定義
課題から要求を正確に把握し、明確な要求として整理し、システム化する範囲を顧客と合意する。
第6回:中間レビュー・デモ
顧客が要件定義の成果物を精査し、以降のフェーズに着手してよいかどうかの判断を行う。
第7回:分析
要件定義工程の成果物から、要求仕様を論理的に分析し、実現手段を検討する。
第8回:分析
 要件定義工程の成果物から、要求仕様を論理的に分析し、実現手段を検討する。
第9回:設計
システムに必要な機能やオブジェクトの構造や振る舞いを、実装を考慮して詳細化する。
第10回:設計
システムに必要な機能やオブジェクトの構造や振る舞いを、実装を考慮して詳細化する。
第11回:開発
ソフトウェアのソースコードを作成する。
第12回:開発&テスト
ソフトウェアのソースコードを作成し、テストを行う。
第13回:テスト
 ソフトウェアのテストを行う。
第14回:最終レビュー
顧客がテスト結果および、詳細設計以降の成果物の内容を精査し、受け入れが妥当か否かを判断する。

※積極的にプロトタイピングを行いながら、チームごとにスケジュール管理と作業を行うので進捗は変わってきますが、中間レビューと最終レビューの日付は変えられません。
教科書
/Textbook(s)
※必要に応じて講義資料を配布する
成績評価の方法・基準
/Grading method/criteria
期末試験は行わず、以下の項目で評価する
1. 中間レビューと最終レビューでの発表25%
2. 成果物(ドキュメントおよびソフトウェア)25%
3. 個人レポート 40%
4. 活動への参加と貢献度 10%
※各学生の貢献度は進捗報告とプロジェクト管理システムで確認する。
※評価には顧客とコーチの意見も取り入れる。
※個人レポートでは、プロジェクトでの活動・貢献内容やソフトウェア工学とプロジェクトマネジメントの知識・理解に関する質問について論じてもらいます。
履修上の留意点
/Note for course registration
• 次の授業を履修していることを前提とした授業です。
FU14ソフトウェア工学概論
IE03ソフトウェア総合演習Ⅰ
IE04ソフトウェア総合演習Ⅱ
• 3下旬~授業開始前の期間に履修希望者に対して実施する事前面談を必ず受けてください。
• プロジェクトごとに必要とされる知識・技術が異なります。
• 開発に必要な技術・知識(設計、プログラミング等)について、スキルが足りない場合には、時間外の自助努力を求めます。
• 授業およびミーティングへの参加は必須です。無断での欠席、遅刻、途中退席は、やむをえない場合を除いてマイナス評価します。
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
http://borealis.u-aizu.ac.jp/classes/studio/
http://u-aizu.ac.jp/enpit/

実務経験有り:企業でソフトウェア開発に従事している技術者が講師として毎回の授業に参加し、学生の開発活動に対するレビュー、評価、アドバイスを行います。
現役のソフトウェア技術者(30年以上の実務経験)とソフトウェア開発に従事した経験豊富な教員が共同で授業を行います。


科目一覧へ戻る
開講学期
/Semester
2020年度/Academic Year  4学期 /Fourth Quarter
対象学年
/Course for;
3年
単位数
/Credits
3.0
責任者
/Coordinator
モズゴボイ マキシム
担当教員名
/Instructor
モズゴボイ マキシム
推奨トラック
/Recommended track
履修規程上の先修条件
/Prerequisites

更新日/Last updated on 2020/01/29
授業の概要
/Course outline
Concurrent programs take advantage of modern multicore and multiprocessor machines to implement algorithms that run concurrently (in parallel) to achieve higher performance and better user experience. Distributed computing brings this idea to the next level, dealing with the systems made up of independent computers, linked by a network.

At the present time, both concurrent and distributed systems are widespread, due to high popularity of multicore machines and computer networks. However, the design and implementation of such systems and corresponding software remains a challenging task. We have to know how to coordinate independent processes to achieve high performance and avoid common pitfalls.

The goal of this course is to introduce the basics of concurrent and distributed systems design and implementation. We will cover a number of classical and modern approaches to this problem, paying special attention to the practical aspects of implementation using Java language.
授業の目的と到達目標
/Objectives and attainment
goals
At the end of the course the student should be able to:
- Understand the key advantages of concurrent and distributed systems and common problems the developers may encounter.
- Know different approaches to concurrent and distributed systems design, their advantages and disadvantages.
- Be able to implement simple concurrent and distributed systems using modern tools.
- Be aware of the historical perspective of the developments in this area, understand modern trends and technologies.
授業スケジュール
/Class schedule
1. Introduction
2. Basics of Concurrency
3. Synchronizing Processes
4. Introduction to Model Checking and Promela Language
5. Model Checking with SPIN and Linear Temporal Logic
6. From Shared-memory Model to Message Passing
7. Distributed Programming with MPI
8. Types of Distributed Systems
9. Client-Server Programming
10. RMI: Distributed Objects in Java
11. Modern Concurrent Programming in Java
12. Grids and Clouds
13. OpenMP Technology.
14. Actors and Akka Toolkit.
教科書
/Textbook(s)
- Distributed Systems: Principles and Paradigms by Andrew S. Tanenbaum and Maarten van Steen, Prentice Hall, 2007.

- M. Ben-Ari. Principles of Concurrent and Distributed Programming, 2nd Ed. Addison-Wesley, 2006.

- G. R. Andrews. Foundations of Multithreaded, Parallel, and Distributed Programming. Addision-Wesley, 2000.

- M. L. Liu, Distributed Computing: Principles and Applications, Addison-Wesley, 2004.
成績評価の方法・基準
/Grading method/criteria
The final grade is based on the following parts:

- Exercises (50% of the final score).
- Two exams (30% of the final score).
- Quizzes on lecture content (20% of the final score).

We keep strict deadlines in this course.
履修上の留意点
/Note for course registration
The presented course is not an introductory subject. It is intended for students who already have basic experience in programming such as Java Programming, Algorithms and Data Structures, Object-Oriented Programming, Operating Systems.
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
https://tinyurl.com/cds-course


科目一覧へ戻る
開講学期
/Semester
2020年度/Academic Year  2学期 /Second Quarter
対象学年
/Course for;
3年
単位数
/Credits
3.0
責任者
/Coordinator
バーラ サバシュ
担当教員名
/Instructor
バーラ サバシュ, チュー ウォンミィング
推奨トラック
/Recommended track
履修規程上の先修条件
/Prerequisites

更新日/Last updated on 2020/01/31
授業の概要
/Course outline
Course considers- Design of Database System  functions, such as- 1. query mechanisms, 2. transaction management, 3. buffer management, 4. access methods. The other topics to be considered are:
• Database architecture and data independence
• Use of a declarative query language
• Systems supporting structured and/or stream content
• Approaches for managing large volumes of data
Approaches to and evolution of database systems
• Components of database systems
授業の目的と到達目標
/Objectives and attainment
goals
1. Distinguish the database approach from the approach of programming with files.
2. Study designs for core database system components including the query optimizer,
query executor, storage manager, access methods, and transaction processor.
3. Study the basic goals, functions, and models of database systems.
4. Describe the components of a database system and give examples of their use.
5. Main DBMS functions and describe their role in a database system.
6.  The concept of data independence and its importance in a database system.
7. Use a declarative query language to elicit information from a database.
8. Use facilities that databases provide supporting structures and/or stream (sequence) data, e.g., text.
9. Discuss major approaches to storing and processing large volumes of data,
   (noSQL database systems, use of MapReduce).
授業スケジュール
/Class schedule
Lecture 1:   Data Model+Operations  
Lecture 2:   Database Query Languages, Model Database
Lecture 3:   Relational Algebra  ,  Database exercises
Lecture 4:   Relational Calculus    + Database exercises
Lecture 5:    Dictionary and storage,   Design of a Database
Lecture  6:   Storage Indexing     Complete  Hw + Ex ( Part I )
-----------------------Mid-Term exam --------------------------
Lecture  7      Objects - Relations  ,  startup(PostgreSQL O-RDBMSs)
Lecture  8     Data Integrity ,       loading database
Lecture  9    DBMS Architecture ,   simple SQL queries
Lecture 10   SQL  -  Programming ,  complex SQL queries
Lecture 11  Relational databases,  SQL functions and procedures
Lecture 12   Views,XML,O-RDBMS ,  Database modifications
Lecture 13  Postgres Internals ,   Web database programming
Lecture 14   Web Data  ,    Complete  Ex+Hw
教科書
/Textbook(s)
Database Systems Concepts, 7th edition,
by Korth, H.A., Silberschatz, A., and Sudershan, S., McGrawHill Book Co., 2019.
成績評価の方法・基準
/Grading method/criteria
Mid-term Examination(30 points); Two short quizzes (40 points (20 points each))
Database Programming Assignments(30 points)
履修上の留意点
/Note for course registration
Prior study of following courses is recommended - discrete mathematics, programming, Data structures and algorithms.
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
Books, Course material,  lecture slides and notes recommended by the instructor(s),
   will be provided.


このページの内容に関するお問い合わせは学生課 教務係までお願いいたします。

お問い合わせ先メールアドレス:sad-aas@u-aizu.ac.jp