SlideShare a Scribd company logo
1 of 25
+
Nuts and Bolts (1)
Systems Analysis and Design
Michael Heron
+
Introduction
 For now, we have reached the end of our discussion on how to
analyse and design a system.
 The next stage is talking about what happens next – the nuts and
bolts of putting a system together.
 Analysis and Design is implementation agnostic.
 It presupposes a ‘class’ of implementation languages, but not
specifics.
 SSADM will imply a standard procedural language.
 UML will imply an object oriented language.
 Turning a design into an implementation is an important and
complex task for developers.
 The design says how, but the developers must carry that out.
+
Development from a Design
 In its ideal form, a design document can be transcribed into an
implementation language without much difficulty.
 If the design is at the correct level of abstraction to be implemented.
 More often though, developers must interpret design
documents in a way that is harmonious with the overall
architecture of a system.
 They don’t change infrastructure, but they may choose specific
implementations.
 Rarely will a design be possible to implement one for one.
 And there is much scope for a developer here to creatively tweak a
model.
+
Mapping from UML
 Each of the documents produced in UML gives a view of a
specific part of the eventual system.
 Class diagrams lead to class structures.
 Activity diagrams lead to method implementation
 Use cases lead to user interface choices
 Sequence diagrams show the order of invocation of methods
 This doesn’t cover the entirety of what needs to be coded.
 We have left out a number of diagrams from the module.
 However, it should be possible in many respects to directly
translate these into code.
+
A Class Diagram
Book
- name: String
- ISBN : String
- Author: String
+ getName() : String
+ setName(n : String)
+ getISBN() : String
+ setISBN(i : String)
+ getAuthor(): String
+ setAuthor (a : String)
Library
- books[] : Book
+ addBook (b : Book)
+ removeBook (b : Book)
+ findBook (t: String) : Book
+ listBooks () : Book[]
+
To The Code
 Everything we need to build the structure of a program is
contained in here.
 We just need to decide on an implementation language.
 Our first decision here is important, it will greatly influence what
happens next.
 A good understanding of languages and their benefits/drawbacks
lets you make an informed choice.
 There is no real difference in ‘difficulty’ between languages in a
particular classification.
 They all have strengths and weaknesses though.
+
Language Considerations
 ‘You go to war with the army you have’
 This means that competency within a team is an important
consideration.
 There’s no point picking Java as an implementation language if nobody
knows it and there isn’t time to learn.
 Your first consideration will derive from the design you have put in
place.
 Do you require multiple inheritance?
 If so, your choices are limited.
 Can any multiple inheritance in the system be resolved through the use
of interfaces?
 In most cases this is true.
 Can the model be adjusted to resolve remaining shared code problems.
 Possible through some design patterns.
+
Language Considerations
 If you don’t require multiple inheritance, things become much
easier.
 You have more options as to what you can choose.
 You then need to consider what the key elements of the system
are going to be.
 Is it high traffic?
 Is it heavily GUI based?
 Does it have to run over multiple systems?
 Does it need to be web enabled?
 Does it involve databases?
 Does it need to be ported to multiple systems?
+
Language Considerations - Java
 Java is for many developers their ‘default’ language.
 It has a good blend of everything without any serious flaws.
 Java runs on a ‘virtual machine’ which allows for it to be decoupled from
the underlying hardware.
 This makes it very easy to port from one environment to another.
 Java allows for an easy conversion between desktop applications and web
applets.
 Although the latter have some security limitations.
 Java however is resource heavy.
 While it is not noticeably slower than other languages when a program is running,
it takes longer and more memory to get it running.
 It’s a well supported language with a vibrant developer base.
 There’s lots of frameworks and such out there you can use.
+
Language Considerations – C++
 C++ is one of the precursors to Java.
 Pointer driver object orientation.
 It supports multiple inheritance.
 Although this is as much a curse as a blessing.
 Performance wise it has the potential to be very good.
 But any tool is only as good as the person using it.
 Very easy to mis-use and mis-implement.
 C++ code is significantly more complicated than other OO languages
because of the issues of pointers.
 Tied to its implementation.
 Porting is an extra task.
+
Language Considerations - .NET
 For the .NET architecture, the specific language you choose is
syntactic only.
 They all compile down to exactly the same bytecode.
 Much like a ‘multi language’ version of Java.
 However, while there are open source implementations of the
.NET runtime, they suffer from problems.
 Not feature complete
 Don’t keep pace with Microsoft releases.
 .NET is best considered a windows technology.
 Porting to other platforms is fraught with difficulties.
 However, the .NET platform has considerable traction.
 Most developers will be familiar with some flavour of it.
+
Once you’ve chosen
 Once you’ve chosen a language, the next thing to do is put the
architecture of your classes in place.
 Make abundant use of placeholders here.
 You want to get all the classes into the program, in a form that
allows your system to compile.
 This will involve putting in method stubs for each of your
behaviours.
 It will also involve implementing the specific links between classes
implied by attributes.
 This is an important first step.
 It ensures everything links up properly.
+
Implementation
 Here, the language we choose starts to be important.
 UML represents getters/setters as separate methods.
 As is done in C++ and Java.
 .NET however has a specific syntactic form for these.
 They’re done as properties.
 This allows for a number of benefits regarding reflection of
classes and member attributes.
 If we choose to implement in a .NET language, we have to
choose the best form of implementation for what’s in our
design.
+
Implementation
 UML usually does not imply a particular kind of data structure
for implementation.
 Other than what is shown in associations and aggregations.
 Whenever we see the ‘array’ symbol in a design, we have the
specific choices as to how it should best be implemented
 Do we want a standard fixed size array?
 An ArrayList which will expand as we add elements to it?
 A linked list?
 A hashtable?
 We need to view a class in terms of the kind of interactions we
will need to perform with the data.
+
Implementation
 If we are going to be doing a lot of iterating over data, then an
array or similar collection might be useful.
 If we are going to be working primarily with individual data
elements, a hashtable (or dictionary, or mapping, or however you
know it) might be better.
 This will have implications for how the rest of the system works,
and choosing the right data structure will make everything easier
to do.
 You should decide upon this as you implement the architecture.
 You’re not stuck with it, and good OO discipline will ensure a limited
impact of change if you decide to change your mind.
+
Implementation - Java
public class Book {
private String name;
private String ISBN;
private String Author;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getISBN() {
return ISBN;
}
public void setISBN(String ISBN) {
this.ISBN = ISBN;
}
public String getAuthor() {
return Author;
}
public void setAuthor(String Author) {
this.Author = Author;
}
}
+
Implementation - Java
import java.util.*;
public class Library {
ArrayList<Book> books;
public Library() {
books = new ArrayList<Book>();
}
void addBook (Book b) {
books.add (b);
}
void removeBook (Book b) {
books.remove (b);
}
Book findBook (String b) {
return null;
}
ArrayList<Book> listBooks() {
return books;
}
}
+
Implementation – VB .NET
Public Class Book
Private myName As String
Private myISBN As String
Private myAuthor As String
Property Name() As String
Get
Return myName
End Get
Set(value As String)
myName = value
End Set
End Property
Property ISBN() As String
Get
Return myISBN
End Get
Set(value As String)
myISBN = value
End Set
End Property
Property Author() As String
Get
Return myAuthor
End Get
Set(value As String)
myAuthor = value
End Set
End Property
End Class
+
Implementation – VB .NET
Public Class Library
Dim books As ArrayList
Public Sub New()
books = New ArrayList
End Sub
Public Sub addBook(b As Book)
books.Add(b)
End Sub
Public Sub removeBook(b As Book)
books.Remove(b)
End Sub
Public Function findBook(n As String) As Book
Return Nothing
End Function
Public Function listBooks() As ArrayList
Return books
End Function
End Class
+
Implementation
 Note that there is very little functionality here.
 Only that which is required to make the system compile.
 We approach this from a principle of incremental development.
 The findBook method for example is a placeholder.
 Our activity diagrams/pseudocode will take us from the
placeholder to the proper implementation.
 As part of a ‘proper’ design model, there will be diagrams and
pseudocode to represent all of these functions.
 Where they touch on other parts of the system, they will be shown in
sequence diagrams.
+
Implementation
 We’ll look at those parts of the system next week.
 We still have to discuss some things about the class design.
 Ideally, most of the architectural issues are handled at design time.
 However, the language chosen will allow for certain elegancies to
be introduced.
 C++ has no concept of an interface for example.
 Certain classes in a system will be expected to be abstract.
 Never instantiated.
 Our first implementations of the class diagram should honour both
of these conventions.
+
Abstract and Interface
 An abstract class is one which serves as a polymorphic base for
other classes, but is never intended to be instantiated itself.
 It doesn’t have enough context about it.
 A good class diagram will identify when classes are expected to be
abstract.
 This is indicated in UML by putting the class name in italics.
 A good class diagram will identify when polymorphic structure is
needed without code.
 These are interfaces.
 These are indicated with the class name in <<Angle Brackets>>
 And the implementation of these interfaces is represented by a
dashed line.
+
Abstract and Interface
 Strictly speaking, abstract classes are not necessary.
 You can just choose not to instantiate particular classes.
 However, the use of an abstract class requires that any child class
provide implementations of abstract methods.
 Or that they themselves are declared as abstract.
 This should be represented in a class diagram, but part of building
the class structure is to ensure the classes are properly designed.
 It should compile once you have implemented the bare bones of
everything.
 The first stages of implementation will help inform design as part
of the regular ‘give and take’
+
Abstract and Interface
 An interface is slightly different – it’s the mechanism many single
inheritance languages use to give multiple polymorphic ‘contracts’.
 Interfaces come with no code, but they do come with a set of
methods.
 A ‘contract’ that must be met before your system will compile.
 Interfaces allow for polymorphism to be more flexible than strict
inheritance permits.
 And as such, should be used where possible to make a system easier
to work with.
 Ensuring that your system compiles will show that interface
contracts are met.
+
Conclusion
 This is the first part of our implementation – creating the initial
class representations.
 This takes us a surprising way towards the eventual implemented
system.
 Next week we’ll look at implementation of features and
incremental development of functions.
 Moving towards having an actual working program.
 The week after we’ll look at how the use-case diagrams inform
our development of the user interface.
 Although we shouldn’t leave that to the last minute for all kinds of
reasons.

More Related Content

What's hot

Evolve Your Code
Evolve Your CodeEvolve Your Code
Evolve Your CodeRookieOne
 
Deep contextualized word representations
Deep contextualized word representationsDeep contextualized word representations
Deep contextualized word representationsJunya Kamura
 
The Ring programming language version 1.8 book - Part 93 of 202
The Ring programming language version 1.8 book - Part 93 of 202The Ring programming language version 1.8 book - Part 93 of 202
The Ring programming language version 1.8 book - Part 93 of 202Mahmoud Samir Fayed
 
Object Oriented Programming : A Brief History and its significance
Object Oriented Programming : A Brief History and its significanceObject Oriented Programming : A Brief History and its significance
Object Oriented Programming : A Brief History and its significanceGajesh Bhat
 
Data weave 2.0 language fundamentals
Data weave 2.0 language fundamentalsData weave 2.0 language fundamentals
Data weave 2.0 language fundamentalsManjuKumara GH
 
Introduction to object oriented language
Introduction to object oriented languageIntroduction to object oriented language
Introduction to object oriented languagefarhan amjad
 
Implementing Higher-Kinded Types in Dotty
Implementing Higher-Kinded Types in DottyImplementing Higher-Kinded Types in Dotty
Implementing Higher-Kinded Types in DottyMartin Odersky
 
OOP programming
OOP programmingOOP programming
OOP programminganhdbh
 
OOP Unit 1 - Foundation of Object- Oriented Programming
OOP Unit 1 - Foundation of Object- Oriented ProgrammingOOP Unit 1 - Foundation of Object- Oriented Programming
OOP Unit 1 - Foundation of Object- Oriented Programmingdkpawar
 
1 unit (oops)
1 unit (oops)1 unit (oops)
1 unit (oops)Jay Patel
 
Introduction to java 101
Introduction to java 101Introduction to java 101
Introduction to java 101kankemwa Ishaku
 
Java 101 intro to programming with java
Java 101  intro to programming with javaJava 101  intro to programming with java
Java 101 intro to programming with javaHawkman Academy
 
What does OOP stand for?
What does OOP stand for?What does OOP stand for?
What does OOP stand for?Colin Riley
 

What's hot (20)

Unit 1
Unit 1Unit 1
Unit 1
 
Evolve Your Code
Evolve Your CodeEvolve Your Code
Evolve Your Code
 
Deep contextualized word representations
Deep contextualized word representationsDeep contextualized word representations
Deep contextualized word representations
 
C++ chapter 1
C++ chapter 1C++ chapter 1
C++ chapter 1
 
The Ring programming language version 1.8 book - Part 93 of 202
The Ring programming language version 1.8 book - Part 93 of 202The Ring programming language version 1.8 book - Part 93 of 202
The Ring programming language version 1.8 book - Part 93 of 202
 
Oodb
OodbOodb
Oodb
 
Object Oriented Programming : A Brief History and its significance
Object Oriented Programming : A Brief History and its significanceObject Oriented Programming : A Brief History and its significance
Object Oriented Programming : A Brief History and its significance
 
Data weave 2.0 language fundamentals
Data weave 2.0 language fundamentalsData weave 2.0 language fundamentals
Data weave 2.0 language fundamentals
 
Introduction to object oriented language
Introduction to object oriented languageIntroduction to object oriented language
Introduction to object oriented language
 
Implementing Higher-Kinded Types in Dotty
Implementing Higher-Kinded Types in DottyImplementing Higher-Kinded Types in Dotty
Implementing Higher-Kinded Types in Dotty
 
OOP programming
OOP programmingOOP programming
OOP programming
 
Chapter1 introduction
Chapter1 introductionChapter1 introduction
Chapter1 introduction
 
OOP Unit 1 - Foundation of Object- Oriented Programming
OOP Unit 1 - Foundation of Object- Oriented ProgrammingOOP Unit 1 - Foundation of Object- Oriented Programming
OOP Unit 1 - Foundation of Object- Oriented Programming
 
1 unit (oops)
1 unit (oops)1 unit (oops)
1 unit (oops)
 
Java notes(OOP) jkuat IT esection
Java notes(OOP) jkuat IT esectionJava notes(OOP) jkuat IT esection
Java notes(OOP) jkuat IT esection
 
Introduction to java 101
Introduction to java 101Introduction to java 101
Introduction to java 101
 
Java 101 intro to programming with java
Java 101  intro to programming with javaJava 101  intro to programming with java
Java 101 intro to programming with java
 
Dart
DartDart
Dart
 
Java for C++ programers
Java for C++ programersJava for C++ programers
Java for C++ programers
 
What does OOP stand for?
What does OOP stand for?What does OOP stand for?
What does OOP stand for?
 

Viewers also liked

SAD13 - Risk Analysis
SAD13 - Risk AnalysisSAD13 - Risk Analysis
SAD13 - Risk AnalysisMichael Heron
 
Decision Management Systems Part One Decision Discovery
Decision Management Systems Part One Decision DiscoveryDecision Management Systems Part One Decision Discovery
Decision Management Systems Part One Decision DiscoveryDecision Management Solutions
 
How to Build Decision Management Systems Part 3 - Decision Analysis
How to Build Decision Management Systems Part 3 - Decision AnalysisHow to Build Decision Management Systems Part 3 - Decision Analysis
How to Build Decision Management Systems Part 3 - Decision AnalysisDecision Management Solutions
 
System analysis and design
System analysis and design System analysis and design
System analysis and design Razan Al Ryalat
 
System Analysis and Design
System Analysis and DesignSystem Analysis and Design
System Analysis and DesignAamir Abbas
 

Viewers also liked (6)

SAD13 - Risk Analysis
SAD13 - Risk AnalysisSAD13 - Risk Analysis
SAD13 - Risk Analysis
 
Decision Management Systems Part One Decision Discovery
Decision Management Systems Part One Decision DiscoveryDecision Management Systems Part One Decision Discovery
Decision Management Systems Part One Decision Discovery
 
How to Build Decision Management Systems Part 3 - Decision Analysis
How to Build Decision Management Systems Part 3 - Decision AnalysisHow to Build Decision Management Systems Part 3 - Decision Analysis
How to Build Decision Management Systems Part 3 - Decision Analysis
 
Decision analysis
Decision analysisDecision analysis
Decision analysis
 
System analysis and design
System analysis and design System analysis and design
System analysis and design
 
System Analysis and Design
System Analysis and DesignSystem Analysis and Design
System Analysis and Design
 

Similar to SAD14 - The Nuts and Bolts

Designing A Project Using Java Programming
Designing A Project Using Java ProgrammingDesigning A Project Using Java Programming
Designing A Project Using Java ProgrammingKaty Allen
 
Envisioning the Future of Language Workbenches
Envisioning the Future of Language WorkbenchesEnvisioning the Future of Language Workbenches
Envisioning the Future of Language WorkbenchesMarkus Voelter
 
Computer Science Is The Study Of Principals And How The...
Computer Science Is The Study Of Principals And How The...Computer Science Is The Study Of Principals And How The...
Computer Science Is The Study Of Principals And How The...Laura Martin
 
Data Science - Part II - Working with R & R studio
Data Science - Part II -  Working with R & R studioData Science - Part II -  Working with R & R studio
Data Science - Part II - Working with R & R studioDerek Kane
 
Importance Of Being Driven
Importance Of Being DrivenImportance Of Being Driven
Importance Of Being DrivenAntonio Terreno
 
Concepts In Object Oriented Programming Languages
Concepts In Object Oriented Programming LanguagesConcepts In Object Oriented Programming Languages
Concepts In Object Oriented Programming Languagesppd1961
 
Modern_2.pptx for java
Modern_2.pptx for java Modern_2.pptx for java
Modern_2.pptx for java MayaTofik
 
Clustered PHP - DC PHP 2009
Clustered PHP - DC PHP 2009Clustered PHP - DC PHP 2009
Clustered PHP - DC PHP 2009marcelesser
 
Vb6.0 Introduction
Vb6.0 IntroductionVb6.0 Introduction
Vb6.0 IntroductionTennyson
 
Procedural Programming Of Programming Languages
Procedural Programming Of Programming LanguagesProcedural Programming Of Programming Languages
Procedural Programming Of Programming LanguagesTammy Moncrief
 
Introduction to Software - Coder Forge - John Mulhall
Introduction to Software - Coder Forge - John MulhallIntroduction to Software - Coder Forge - John Mulhall
Introduction to Software - Coder Forge - John MulhallJohn Mulhall
 

Similar to SAD14 - The Nuts and Bolts (20)

Bp301
Bp301Bp301
Bp301
 
Designing A Project Using Java Programming
Designing A Project Using Java ProgrammingDesigning A Project Using Java Programming
Designing A Project Using Java Programming
 
Envisioning the Future of Language Workbenches
Envisioning the Future of Language WorkbenchesEnvisioning the Future of Language Workbenches
Envisioning the Future of Language Workbenches
 
Computer Science Is The Study Of Principals And How The...
Computer Science Is The Study Of Principals And How The...Computer Science Is The Study Of Principals And How The...
Computer Science Is The Study Of Principals And How The...
 
Data Science - Part II - Working with R & R studio
Data Science - Part II -  Working with R & R studioData Science - Part II -  Working with R & R studio
Data Science - Part II - Working with R & R studio
 
Importance Of Being Driven
Importance Of Being DrivenImportance Of Being Driven
Importance Of Being Driven
 
Concepts In Object Oriented Programming Languages
Concepts In Object Oriented Programming LanguagesConcepts In Object Oriented Programming Languages
Concepts In Object Oriented Programming Languages
 
Toolboxes for data scientists
Toolboxes for data scientistsToolboxes for data scientists
Toolboxes for data scientists
 
C++ book
C++ bookC++ book
C++ book
 
Modern_2.pptx for java
Modern_2.pptx for java Modern_2.pptx for java
Modern_2.pptx for java
 
Clustered PHP - DC PHP 2009
Clustered PHP - DC PHP 2009Clustered PHP - DC PHP 2009
Clustered PHP - DC PHP 2009
 
Vb6.0 Introduction
Vb6.0 IntroductionVb6.0 Introduction
Vb6.0 Introduction
 
Java
JavaJava
Java
 
Unit 1
Unit 1Unit 1
Unit 1
 
JAVA
JAVAJAVA
JAVA
 
Procedural Programming Of Programming Languages
Procedural Programming Of Programming LanguagesProcedural Programming Of Programming Languages
Procedural Programming Of Programming Languages
 
Introduction to Software - Coder Forge - John Mulhall
Introduction to Software - Coder Forge - John MulhallIntroduction to Software - Coder Forge - John Mulhall
Introduction to Software - Coder Forge - John Mulhall
 
Getting started with R
Getting started with RGetting started with R
Getting started with R
 
Open source Technology
Open source TechnologyOpen source Technology
Open source Technology
 
The Bund language
The Bund languageThe Bund language
The Bund language
 

More from Michael Heron

Meeple centred design - Board Game Accessibility
Meeple centred design - Board Game AccessibilityMeeple centred design - Board Game Accessibility
Meeple centred design - Board Game AccessibilityMichael Heron
 
Musings on misconduct
Musings on misconductMusings on misconduct
Musings on misconductMichael Heron
 
Accessibility Support with the ACCESS Framework
Accessibility Support with the ACCESS FrameworkAccessibility Support with the ACCESS Framework
Accessibility Support with the ACCESS FrameworkMichael Heron
 
ACCESS: A Technical Framework for Adaptive Accessibility Support
ACCESS:  A Technical Framework for Adaptive Accessibility SupportACCESS:  A Technical Framework for Adaptive Accessibility Support
ACCESS: A Technical Framework for Adaptive Accessibility SupportMichael Heron
 
Authorship and Autership
Authorship and AutershipAuthorship and Autership
Authorship and AutershipMichael Heron
 
Text parser based interaction
Text parser based interactionText parser based interaction
Text parser based interactionMichael Heron
 
GRPHICS08 - Raytracing and Radiosity
GRPHICS08 - Raytracing and RadiosityGRPHICS08 - Raytracing and Radiosity
GRPHICS08 - Raytracing and RadiosityMichael Heron
 
GRPHICS07 - Textures
GRPHICS07 - TexturesGRPHICS07 - Textures
GRPHICS07 - TexturesMichael Heron
 
GRPHICS05 - Rendering (2)
GRPHICS05 - Rendering (2)GRPHICS05 - Rendering (2)
GRPHICS05 - Rendering (2)Michael Heron
 
GRPHICS04 - Rendering (1)
GRPHICS04 - Rendering (1)GRPHICS04 - Rendering (1)
GRPHICS04 - Rendering (1)Michael Heron
 
GRPHICS03 - Graphical Representation
GRPHICS03 - Graphical RepresentationGRPHICS03 - Graphical Representation
GRPHICS03 - Graphical RepresentationMichael Heron
 
GRPHICS02 - Creating 3D Graphics
GRPHICS02 - Creating 3D GraphicsGRPHICS02 - Creating 3D Graphics
GRPHICS02 - Creating 3D GraphicsMichael Heron
 
GRPHICS01 - Introduction to 3D Graphics
GRPHICS01 - Introduction to 3D GraphicsGRPHICS01 - Introduction to 3D Graphics
GRPHICS01 - Introduction to 3D GraphicsMichael Heron
 
GRPHICS09 - Art Appreciation
GRPHICS09 - Art AppreciationGRPHICS09 - Art Appreciation
GRPHICS09 - Art AppreciationMichael Heron
 

More from Michael Heron (20)

Meeple centred design - Board Game Accessibility
Meeple centred design - Board Game AccessibilityMeeple centred design - Board Game Accessibility
Meeple centred design - Board Game Accessibility
 
Musings on misconduct
Musings on misconductMusings on misconduct
Musings on misconduct
 
Accessibility Support with the ACCESS Framework
Accessibility Support with the ACCESS FrameworkAccessibility Support with the ACCESS Framework
Accessibility Support with the ACCESS Framework
 
ACCESS: A Technical Framework for Adaptive Accessibility Support
ACCESS:  A Technical Framework for Adaptive Accessibility SupportACCESS:  A Technical Framework for Adaptive Accessibility Support
ACCESS: A Technical Framework for Adaptive Accessibility Support
 
Authorship and Autership
Authorship and AutershipAuthorship and Autership
Authorship and Autership
 
Text parser based interaction
Text parser based interactionText parser based interaction
Text parser based interaction
 
SAD04 - Inheritance
SAD04 - InheritanceSAD04 - Inheritance
SAD04 - Inheritance
 
GRPHICS08 - Raytracing and Radiosity
GRPHICS08 - Raytracing and RadiosityGRPHICS08 - Raytracing and Radiosity
GRPHICS08 - Raytracing and Radiosity
 
GRPHICS07 - Textures
GRPHICS07 - TexturesGRPHICS07 - Textures
GRPHICS07 - Textures
 
GRPHICS06 - Shading
GRPHICS06 - ShadingGRPHICS06 - Shading
GRPHICS06 - Shading
 
GRPHICS05 - Rendering (2)
GRPHICS05 - Rendering (2)GRPHICS05 - Rendering (2)
GRPHICS05 - Rendering (2)
 
GRPHICS04 - Rendering (1)
GRPHICS04 - Rendering (1)GRPHICS04 - Rendering (1)
GRPHICS04 - Rendering (1)
 
GRPHICS03 - Graphical Representation
GRPHICS03 - Graphical RepresentationGRPHICS03 - Graphical Representation
GRPHICS03 - Graphical Representation
 
GRPHICS02 - Creating 3D Graphics
GRPHICS02 - Creating 3D GraphicsGRPHICS02 - Creating 3D Graphics
GRPHICS02 - Creating 3D Graphics
 
GRPHICS01 - Introduction to 3D Graphics
GRPHICS01 - Introduction to 3D GraphicsGRPHICS01 - Introduction to 3D Graphics
GRPHICS01 - Introduction to 3D Graphics
 
GRPHICS09 - Art Appreciation
GRPHICS09 - Art AppreciationGRPHICS09 - Art Appreciation
GRPHICS09 - Art Appreciation
 
2CPP18 - Modifiers
2CPP18 - Modifiers2CPP18 - Modifiers
2CPP18 - Modifiers
 
2CPP17 - File IO
2CPP17 - File IO2CPP17 - File IO
2CPP17 - File IO
 
2CPP16 - STL
2CPP16 - STL2CPP16 - STL
2CPP16 - STL
 
2CPP15 - Templates
2CPP15 - Templates2CPP15 - Templates
2CPP15 - Templates
 

Recently uploaded

5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceanilsa9823
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 

Recently uploaded (20)

5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 

SAD14 - The Nuts and Bolts

  • 1. + Nuts and Bolts (1) Systems Analysis and Design Michael Heron
  • 2. + Introduction  For now, we have reached the end of our discussion on how to analyse and design a system.  The next stage is talking about what happens next – the nuts and bolts of putting a system together.  Analysis and Design is implementation agnostic.  It presupposes a ‘class’ of implementation languages, but not specifics.  SSADM will imply a standard procedural language.  UML will imply an object oriented language.  Turning a design into an implementation is an important and complex task for developers.  The design says how, but the developers must carry that out.
  • 3. + Development from a Design  In its ideal form, a design document can be transcribed into an implementation language without much difficulty.  If the design is at the correct level of abstraction to be implemented.  More often though, developers must interpret design documents in a way that is harmonious with the overall architecture of a system.  They don’t change infrastructure, but they may choose specific implementations.  Rarely will a design be possible to implement one for one.  And there is much scope for a developer here to creatively tweak a model.
  • 4. + Mapping from UML  Each of the documents produced in UML gives a view of a specific part of the eventual system.  Class diagrams lead to class structures.  Activity diagrams lead to method implementation  Use cases lead to user interface choices  Sequence diagrams show the order of invocation of methods  This doesn’t cover the entirety of what needs to be coded.  We have left out a number of diagrams from the module.  However, it should be possible in many respects to directly translate these into code.
  • 5. + A Class Diagram Book - name: String - ISBN : String - Author: String + getName() : String + setName(n : String) + getISBN() : String + setISBN(i : String) + getAuthor(): String + setAuthor (a : String) Library - books[] : Book + addBook (b : Book) + removeBook (b : Book) + findBook (t: String) : Book + listBooks () : Book[]
  • 6. + To The Code  Everything we need to build the structure of a program is contained in here.  We just need to decide on an implementation language.  Our first decision here is important, it will greatly influence what happens next.  A good understanding of languages and their benefits/drawbacks lets you make an informed choice.  There is no real difference in ‘difficulty’ between languages in a particular classification.  They all have strengths and weaknesses though.
  • 7. + Language Considerations  ‘You go to war with the army you have’  This means that competency within a team is an important consideration.  There’s no point picking Java as an implementation language if nobody knows it and there isn’t time to learn.  Your first consideration will derive from the design you have put in place.  Do you require multiple inheritance?  If so, your choices are limited.  Can any multiple inheritance in the system be resolved through the use of interfaces?  In most cases this is true.  Can the model be adjusted to resolve remaining shared code problems.  Possible through some design patterns.
  • 8. + Language Considerations  If you don’t require multiple inheritance, things become much easier.  You have more options as to what you can choose.  You then need to consider what the key elements of the system are going to be.  Is it high traffic?  Is it heavily GUI based?  Does it have to run over multiple systems?  Does it need to be web enabled?  Does it involve databases?  Does it need to be ported to multiple systems?
  • 9. + Language Considerations - Java  Java is for many developers their ‘default’ language.  It has a good blend of everything without any serious flaws.  Java runs on a ‘virtual machine’ which allows for it to be decoupled from the underlying hardware.  This makes it very easy to port from one environment to another.  Java allows for an easy conversion between desktop applications and web applets.  Although the latter have some security limitations.  Java however is resource heavy.  While it is not noticeably slower than other languages when a program is running, it takes longer and more memory to get it running.  It’s a well supported language with a vibrant developer base.  There’s lots of frameworks and such out there you can use.
  • 10. + Language Considerations – C++  C++ is one of the precursors to Java.  Pointer driver object orientation.  It supports multiple inheritance.  Although this is as much a curse as a blessing.  Performance wise it has the potential to be very good.  But any tool is only as good as the person using it.  Very easy to mis-use and mis-implement.  C++ code is significantly more complicated than other OO languages because of the issues of pointers.  Tied to its implementation.  Porting is an extra task.
  • 11. + Language Considerations - .NET  For the .NET architecture, the specific language you choose is syntactic only.  They all compile down to exactly the same bytecode.  Much like a ‘multi language’ version of Java.  However, while there are open source implementations of the .NET runtime, they suffer from problems.  Not feature complete  Don’t keep pace with Microsoft releases.  .NET is best considered a windows technology.  Porting to other platforms is fraught with difficulties.  However, the .NET platform has considerable traction.  Most developers will be familiar with some flavour of it.
  • 12. + Once you’ve chosen  Once you’ve chosen a language, the next thing to do is put the architecture of your classes in place.  Make abundant use of placeholders here.  You want to get all the classes into the program, in a form that allows your system to compile.  This will involve putting in method stubs for each of your behaviours.  It will also involve implementing the specific links between classes implied by attributes.  This is an important first step.  It ensures everything links up properly.
  • 13. + Implementation  Here, the language we choose starts to be important.  UML represents getters/setters as separate methods.  As is done in C++ and Java.  .NET however has a specific syntactic form for these.  They’re done as properties.  This allows for a number of benefits regarding reflection of classes and member attributes.  If we choose to implement in a .NET language, we have to choose the best form of implementation for what’s in our design.
  • 14. + Implementation  UML usually does not imply a particular kind of data structure for implementation.  Other than what is shown in associations and aggregations.  Whenever we see the ‘array’ symbol in a design, we have the specific choices as to how it should best be implemented  Do we want a standard fixed size array?  An ArrayList which will expand as we add elements to it?  A linked list?  A hashtable?  We need to view a class in terms of the kind of interactions we will need to perform with the data.
  • 15. + Implementation  If we are going to be doing a lot of iterating over data, then an array or similar collection might be useful.  If we are going to be working primarily with individual data elements, a hashtable (or dictionary, or mapping, or however you know it) might be better.  This will have implications for how the rest of the system works, and choosing the right data structure will make everything easier to do.  You should decide upon this as you implement the architecture.  You’re not stuck with it, and good OO discipline will ensure a limited impact of change if you decide to change your mind.
  • 16. + Implementation - Java public class Book { private String name; private String ISBN; private String Author; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getISBN() { return ISBN; } public void setISBN(String ISBN) { this.ISBN = ISBN; } public String getAuthor() { return Author; } public void setAuthor(String Author) { this.Author = Author; } }
  • 17. + Implementation - Java import java.util.*; public class Library { ArrayList<Book> books; public Library() { books = new ArrayList<Book>(); } void addBook (Book b) { books.add (b); } void removeBook (Book b) { books.remove (b); } Book findBook (String b) { return null; } ArrayList<Book> listBooks() { return books; } }
  • 18. + Implementation – VB .NET Public Class Book Private myName As String Private myISBN As String Private myAuthor As String Property Name() As String Get Return myName End Get Set(value As String) myName = value End Set End Property Property ISBN() As String Get Return myISBN End Get Set(value As String) myISBN = value End Set End Property Property Author() As String Get Return myAuthor End Get Set(value As String) myAuthor = value End Set End Property End Class
  • 19. + Implementation – VB .NET Public Class Library Dim books As ArrayList Public Sub New() books = New ArrayList End Sub Public Sub addBook(b As Book) books.Add(b) End Sub Public Sub removeBook(b As Book) books.Remove(b) End Sub Public Function findBook(n As String) As Book Return Nothing End Function Public Function listBooks() As ArrayList Return books End Function End Class
  • 20. + Implementation  Note that there is very little functionality here.  Only that which is required to make the system compile.  We approach this from a principle of incremental development.  The findBook method for example is a placeholder.  Our activity diagrams/pseudocode will take us from the placeholder to the proper implementation.  As part of a ‘proper’ design model, there will be diagrams and pseudocode to represent all of these functions.  Where they touch on other parts of the system, they will be shown in sequence diagrams.
  • 21. + Implementation  We’ll look at those parts of the system next week.  We still have to discuss some things about the class design.  Ideally, most of the architectural issues are handled at design time.  However, the language chosen will allow for certain elegancies to be introduced.  C++ has no concept of an interface for example.  Certain classes in a system will be expected to be abstract.  Never instantiated.  Our first implementations of the class diagram should honour both of these conventions.
  • 22. + Abstract and Interface  An abstract class is one which serves as a polymorphic base for other classes, but is never intended to be instantiated itself.  It doesn’t have enough context about it.  A good class diagram will identify when classes are expected to be abstract.  This is indicated in UML by putting the class name in italics.  A good class diagram will identify when polymorphic structure is needed without code.  These are interfaces.  These are indicated with the class name in <<Angle Brackets>>  And the implementation of these interfaces is represented by a dashed line.
  • 23. + Abstract and Interface  Strictly speaking, abstract classes are not necessary.  You can just choose not to instantiate particular classes.  However, the use of an abstract class requires that any child class provide implementations of abstract methods.  Or that they themselves are declared as abstract.  This should be represented in a class diagram, but part of building the class structure is to ensure the classes are properly designed.  It should compile once you have implemented the bare bones of everything.  The first stages of implementation will help inform design as part of the regular ‘give and take’
  • 24. + Abstract and Interface  An interface is slightly different – it’s the mechanism many single inheritance languages use to give multiple polymorphic ‘contracts’.  Interfaces come with no code, but they do come with a set of methods.  A ‘contract’ that must be met before your system will compile.  Interfaces allow for polymorphism to be more flexible than strict inheritance permits.  And as such, should be used where possible to make a system easier to work with.  Ensuring that your system compiles will show that interface contracts are met.
  • 25. + Conclusion  This is the first part of our implementation – creating the initial class representations.  This takes us a surprising way towards the eventual implemented system.  Next week we’ll look at implementation of features and incremental development of functions.  Moving towards having an actual working program.  The week after we’ll look at how the use-case diagrams inform our development of the user interface.  Although we shouldn’t leave that to the last minute for all kinds of reasons.