3. Programmer
1. It's different from a Software Engineer
2. Proficiency in programming languages
3. An incomplete job profile which never exists anymore like the data entry
operators.
a. Programming language deals with both syntax and internals
b. Programming language does not exist in isolation. In olden days they did.
c. Programming languages does not abstract into systems concepts
4. Ada Lovelace is the first programmer. She programmed Charles Babbage
5. Mathematics and Analytical skills using programming constructs like loops,
conditions, recursion and variable management becomes important
4. Software/Systems Engineer/Designer
1. Engineering involves design and solutioning for common problems.
a. Software Engineering involves design and solutioning for business problems using software
practice
2. Design:A Specification for an activity or process
a. Functional - Work to the spec, Robust(Not a Toy), Quality,
b. Aesthetics
c. Economics - cost, time, resource, reuse, usability
d. Social
3. Practice or “Software Engineering” defines the above 4 parameters
4. Programming is a tool for a Software engineer
5. Design involves planning and execution hence bounded
5. Design
DESIGN
Rational Model
1. designers attempt to optimize a design
candidate for known constraints and
objectives,
2. the design process is plan-driven,
3. the design process is understood in
terms of a discrete sequence of stages.
Action-Centric Model
1. designers use creativity and emotion to generate
design candidates,
2. the design process is improvised,
3. no universal sequence of stages is apparent –
analysis, design and implementation are
contemporary and inextricably linked
7. “Bounded Rationality” -
Decision Maker Concepts
● Traceability of the
decision problem
● Cognitive limitation of
the mind
● Time available to make
the decision
Satisfactory Solution Vs Optimal Solution
Cognitive Limitation
Environment Structure
11. Systems Thinking and Design Thinking
Design Thinking vs Systems Thinking
Definition The use of synthesis to
create value and solve
problems.
Thinking about strategy from an
end-to-end perspective that considers
broad implications.
Primarily
Associated
With
Synthesis Analysis
Big-picture-thinking
12. System Thinking and Design Thinking
Synthesis
Analysis
Designer/Engineer/..
Decision
Maker/Architect/Product
Manager
17. SOFTWARE - An abstraction of BRAIN
DATA SYSTEMS
AI SYSTEMS
18. Software System Models
1. Database Systems - ER model, Network, Graph, Hierarchy Model
2. Object Oriented Systems (OOPS)
3. Unified Modelling Language (UML) and Model Driven Architecture
4. Business Process Modelling Notation (BPMN) and BPEL (Business Process
Execution Language) - Activity or Workflow Management
5. Internet Architecture / RFCs
6. Web Services/SOA
7. REST
8. Enterprise Bus
9. Integration Systems
22. ABSTRACT DESIGN PATTERNS
1. Systems Coupling ( API, Microservices, Layered Architecture)
2. Separation of Concerns (Layered Architecture, Microservices, Web Services)
3. Data Encapsulation/ Data Hiding
4. Role Based Access Control
5. Proximity Theory
6. Resource Management (CPU, Memory, Storage, Cache, Connection Pool
etc…)
7. Anti Patterns
29. CODE
CODE IS THE MOST CRITICAL
TOOL OF SOFTWARE. IT'S SIMPLY
BUILT ON IT.
30. CODE
1. Coding is a complex skill
a. Algorithmic Complexity
b. Optimization for Resources/Efficiency
c. Readability (Maintainability)
d. Portability/Interface
e. Secure
A Common technique employed by developers of average skill to ensure the
above objectives are met.
CODE REFACTORING
31. EVALUATION OF CODE
Non Functional
● Big O notation
● Static Code Analysis
● Code Reviews - Peer
● Coder Psychology
● Memory Management
● Performance Management
Functional:
● Quality Analysis