More Related Content
PPTX
PDF
グレープシティのMicrosoft Azure対応への取り組み PDF
PDF
01-Auditoria-Operativa_TEORIA_PARTE_2.pdf PDF
PDF
PPT
PDF
Persistent-memory-native Database High-availability Feature Similar to ソフトウェア工学2023 03 下流工程
PDF
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標 PDF
Object-Funcational Analysis and design PDF
ソフトウェア工学2023 04 開発プロセスモデル PDF
PDF
Why-is-ImplementationPattterns-important-so-much PPT
"The Coming-of-Age of Software Architecture Research" 紹介 PDF
PPTX
まだプログラム手で書いて消耗してるの?~入出力例からプログラムを自動生成する技術~(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019... PDF
Astah UML/ER/mindmapping modeling tool Introduction PDF
新しいソフトウェアエンジニアリングのためのパターンランゲージに向けて PDF
Modeling in the Agile Age and casual astah models PDF
ソフトウェアパターン概論およびパターンを活用したアーキテクチャ設計 PDF
PDF
PPTX
PDF
PDF
2005 icse-five years of product line engineering in a small company PDF
PPT
Distributed Agile using UML PDF
Pythonを含む多くのプログラミング言語を扱う処理フレームワークとパターン、鷲崎弘宜、PyConJP 2016 招待講演 More from Toru Tamaki
PDF
論文紹介:MotionMatcher: Cinematic Motion Customizationof Text-to-Video Diffusion ... PDF
論文紹介:DiffusionRet: Generative Text-Video Retrieval with Diffusion Model PDF
論文紹介:HiLoRA: Adaptive Hierarchical LoRA Routing for Training-Free Domain Gene... PDF
論文紹介:InternVideo2: Scaling Foundation Models for Multimodal Video Understanding PDF
論文紹介: "Locality-Aware Zero-Shot Human-Object Interaction Detection" "Disentan... PDF
論文紹介:Simultaneous Detection and Interaction Reasoning for Object-Centric Acti... PDF
論文紹介:"Reflexion: language agents with verbal reinforcement learning", "MA-LMM... PDF
論文紹介:"MM-Tracker: Motion Mamba for UAV-platform Multiple Object Tracking", "M... PDF
論文紹介:"Keyframe-oriented Vision Token Pruning: Enhancing Efficiency of Large V... PDF
論文紹介:"RAt: Injecting Implicit Bias for Text-To-Image Prompt Refinement Models... PDF
論文紹介:SoccerNet-v2: A Dataset and Benchmarks for Holistic Understanding of Bro... PDF
論文紹介:LoRA in LoRA: Towards Parameter-Efficient Architecture Expansion for Con... PDF
論文紹介:Unboxed: Geometrically and Temporally Consistent Video Outpainting PDF
論文紹介:OVO-Bench: How Far is Your Video-LLMs from Real-World Online Video Unde... PDF
論文紹介:HOTR: End-to-End Human-Object Interaction Detection With Transformers, ... PDF
論文紹介:Segment Anything, SAM2: Segment Anything in Images and Videos PDF
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i... PDF
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ... PDF
論文紹介:「Amodal Completion via Progressive Mixed Context Diffusion」「Amodal Insta... PDF
論文紹介:「mPLUG-Owl3: Towards Long Image-Sequence Understanding in Multi-Modal La... ソフトウェア工学2023 03 下流工程
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
開発
nプログラミング(開発)は内部仕様書・プログラム仕様書に基づく
n使われる言語やフレームワークはシステムによって異なる
• 言語:Java, JavaSript,C, C++, C#, Ruby, Python, Go, Rust, Kotlin, Swift,
MATLAB, etc
• フレームワーク,ライブラリ
• 言語依存:Rails(Ruby,web),Node.js(JavaScript,web),Pytorch
(Python,深層学習)
• 応用依存:ROS(Robot Operating System,ロボット制御),OPC(OLE
for Process Control,プロセス制御),CAN(Controller Area Network,車
載ネットワーク)
• 近年はローコードやノーコードも
n開発ループ
• コーディング,レビュー,テスト
- 8.
開発言語の実際
nJavaが不動の1位
nCOBOLが2位
• 誕生1959年
• CommonBusiness Oriented Language
(共通事務処理用言語)
• 古いシステム(レガシー)の保守改良に必
須
• IBM, COBOLは「古い」のか?令和の時代にCOBOL
の“いま”を語る, 2020/2/4
• 日経クロステック, COBOLがついに国家試験から消
える、若手技術者は「転落」注意, 2019/5/15
ソフトウェア開発分析データ集2022, IPA, 2022.
https://www.ipa.go.jp/ikc/reports/20220926.html
- 9.
開発OSの実際
n1位:Linux
• Unix +Linuxなら2位
• macOSはBSD(UNIX系)
n2位:Windows Server
• PC + Serverなら1位
ソフトウェア開発分析データ集2022, IPA, 2022.
https://www.ipa.go.jp/ikc/reports/20220926.html
- 10.
ローコード・ノーコード
nローコード
• コードをほとんど書かない開発
• GUI+マクロ程度のコード
nノーコード
•コードを書かない開発
• GUIで完結
n例
• 商用:Bubble, Adalo, etc
• 個人向け(自動化ツール):
ifttt, zapier, Power Automete
nメリット
• プログラミングの知識が不要
• 経費削減,時間短縮
nデメリット
• 結局,知識が必要
• 学習コストは0にはならない
• テンプレートの組み合わせ
• 自由度は制限
• プラットフォーム依存
• 開発と運用に必要
• 他に移行できない(ベンダー
ロックイン)
DX白書2023, IPA, 2023
https://www.ipa.go.jp/publish/wp-dx/dx-2023.html
ローコード開発による「悪夢の再来」、ベン
ダー・ロックインや技術的負債にどう対応?,
ビジネス+IT, 2022/7/7
- 11.
- 12.
- 13.
- 14.
- 15.
DFDの要素記号
n主な要素記号は4つ
• 外的要素
• ソース(発生源)
•データをシステムに渡す
• シンク(吸収先)
• システムからデータを受け取る
• プロセス
• 入力されたデータを処理(変換)して出力する
• 入出力データは複数でもよい
• 1vs1, 1vsN, Nvs1, NvsN
• データストア
• データの保存場所
• データフロー
• データのやり取り
外的要素
プロセス
データの流れ
(フロー)
データストア
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
STS分割
nデータの変換点を見つける
• 最大抽象入力点
• 最大抽象出力点
n分割する
•この2点で以下の3つに分割
• Source(源泉)
• Transform(変換)
• Sink(吸収)
• S, T, Sのそれぞれをモジュールと
する
Source Sink
Transform
モジュール2 モジュール3
モジュール1
最大抽象入力点
最大抽象出力点
モジュール
モジュール1 モジュール2 モジュール3
入力データ構造が大き
く形を変える(抽象化
される)点
出力データへ向かって
データ構造が大きく変わ
る(抽象化される)点
- 27.
- 28.
つまり
nmain()べた書きからの卒業
def my_func(data):
data =first_process(data)
data = second_process(data)
data = third_process(data)
return data
def main():
same_process(arg1)
# do someting
same_process(arg2)
# do someting
same_process(arg3)
# do something
def my_func():
same_process(arg4)
def my_func():
if flag:
do_process()
else:
do_another_process()
共通機能分割
TR分割
STS分割
- 29.
モジュール分割の必要性
nモジュールにす
る利点
• 可読性
• 保守性
•拡張性
nしないと...
• すべてmain()に
ベタ書き
• スパゲッティ
コードになる
Donald E. Knuth. 1959. RUNCIBLE—algebraic
translation on a limited computer. Commun. ACM 2, 11
(Nov. 1959), 18–21.
https://doi.org/10.1145/368481.368507
- 30.
構造化プログラミング
n構造化定理
• すべてのプログラムは順次・選
択・反復の3つの制御構造だけで記
述できる[Knuth, 1974][Linger,
Mills & Wit, 1978]
n構造化プログラミング
• 構造化定理に従ったプログラムの
書き方
• 現代的な言語のほとんどが採用
n歴史
• 初期の言語は任意の位置へ処理を
移動できるgoto文を持っていた
• アセンブリ言語,BASIC,
FORTRAN(66, 77, 90), etc
• goto文有害説 [Dijkstra, 1968]
• スパゲッティコードの原因
• 構造化プログラミングの誕生
• 現代的な言語の多くがgoto文を
持たない
• FORTRANも95で削除
• 持つものもある:Go,C++
• ゆるコンピュータ科学ラジオ, プログラミング言語にも歴史の転換点がある
【プログラミングパラダイム・シフト1】#64, 2023/03/19
• ゆるコンピュータ科学ラジオ, 構造化プログラミングが、混沌だったフロー
チャートに秩序を与えた【プログラミングパラダイム・シフト2】#65,
2023/03/26
Graphical representation of the three basic patterns — sequence, selection, and
repetition — using NS diagrams (blue) and flow charts (green)., CC0
- 31.
- 32.
- 33.
モジュールが持つ特性
nモジュール間結合度
• 内容結合
• 高い・悪い
•共通結合
• 外部結合
• 制御結合
• スタンプ結合
• データ結合
• 低い・良い
n結合度が低いほうが良い
• 疎結合,結合していない,別々の
機能が分かれている
https://www.ipa.go.jp/files/000056493.pdf
IPA, 開発技法の実践的演習コース教材, 構造化技法, 講義ノート, 2012
- 34.
- 35.
データベースの設計
nER図
• 実体関連図(Entity Relationshipdiagram)
• 「実体・データ」間の関連や構造(データモデル)を表す
• 3つのレベルがある
• 概念データモデル:概念設計により作成されるシステム全体の概要図
• 論理データモデル:論理設計により更に詳細な図
• 物理データモデル:物理設計により実際のデータベースを表す図
• 記号
• エンティティ(実体):データの集合体
• アトリビュート(属性):データ項目
• リレーション(関連)
• カーディナリティ(多重度):1対1,1対Nなどを表現
- 36.
- 37.
- 38.
- 39.
テストとデバッグ
nデバッグ
• コーディングしても
• コンパイルが通らない
•Syntax error
• 実行できない
• 実行時エラー
• Segmentation fault
• Core dump
• 期待した動きをしない
• コードをデバッグする
• 経験と勘を頼りに
nソフトウェアテスト
• コーディングが終わってコードを
実行する
• 実行結果が仕様と一致しているこ
とを確認する
• 異なる場合にはコードを修正す
る
• すべてのモジュールをテストする
• 網羅的に行う
• 系統立てて行う
• 上位モジュールから下位モ
ジュールまですべて
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
テストの終了条件
nいつまでテストをすればよいか
• バグが完全になくなったことは確
認できない
• テストすればするほど誤りは見つ
かる
•定量的品質予測のススメ 〜ITシステム開発にお
ける品質予測の実践的アプローチ〜, IPA, 2008
• 続 定量的品質予測のススメ 〜ITシステム開発
における定量的品質管理の導入ノウハウと上流
工程へのアプローチ〜, IPA, 2011
n予測した総誤り数に達するまで
• 誤り埋め込みによる予測
• 意図的に誤りを埋め込み,見つ
かった誤りの割合で判断
• 累積誤り数による予測
• 発見された累積誤り数の曲線は
S字型
• 形状モデル:ゴンペルツ曲
線,ロジスティク曲線
• 名称:バグ曲線,信頼度成
長曲線(Software
Reliability Growth Curve)
• あらかじめ設定した誤り数に達
したら終了
誤り数
テスト数
- 48.
- 49.
- 50.
- 51.
- 52.
- 53.
- 54.
- 55.
- 56.
- 57.
- 58.
- 59.
- 60.
- 61.
- 62.
- 63.
- 64.
- 65.
- 67.
- 68.