CS 4500: Software Development

Download Report

Transcript CS 4500: Software Development

CS 4500: Software
Development
Mondays and Wednesdays
2:50-4:30
108 Snell Engineering Center
Software Development
Develop a software for a client
From concept design
To finished product
You will need to test if you have developed
the right product = Validation
What will you learn?
• Process :
o
o
o
o
o
Requirements
Design
Implementation
Iteration
Testing (with all its variations)
• Development Models
What will you learn?
•
•
•
•
Documentation
Management and Project Planning
Code Quality
Software Design Structure
The Teaching Team
• Instructor:
Magy Seif El-Nasr
• Teaching Assistant:
Zhengxing Chen
• Masters Assistants:
Swapnil K. Mahajan
Akshay Raje
Prashanth Rajendran
Abhijeet Sharma
Me!
Introductions
Magy Seif El-Nasr
• Born in Cairo Egypt
• Wanted to be a Surgeon
(parents are both medical
professors)
Magy Seif El-Nasr
• Took a Computer
Graphics class in
High School
• That was 1990
• Took my first class in
CS in high school
Magy Seif El-Nasr
• I declared CS as
my major at
American University
in Cairo (1991)
• Directed in Theatre
while studying
Magy Seif El-Nasr
• Master’s in CS at Texas A&M
• Studied under Lotfi Zadeh’s Student John
Yen
Magy Seif El-Nasr
• But studied psychology of emotions
Build believable
characters
Magy Seif El-Nasr
• Master’s in CS at Texas A&M
• But studied psychology of emotions
Build believable
characters
Magy Seif El-Nasr
• So I went to do my PhD at Northwestern
with Andrew Ortony and Ian Horswill
• To do this:
Build believable characters
Magy Seif El-Nasr
o Natural Language
o Decision Making
Magy Seif El-Nasr
• AI at Northwestern
o Logic
o Problem Solvers
Magy Seif El-Nasr
• AI at Northwestern
o Robotics
Magy Seif El-Nasr
• But I was interested in how to create
innovative experiences that engage so
many people of different ages, and
cultures
Magy Seif El-Nasr
• PhD in CS at Northwestern
• Study theatre and film
innovative
experience
engaging a
market
Magy Seif El-Nasr
• For Games: User Experience is Important
o No real Requirements except to be fun and engaging
Level Design Concept
Feedback visual/audio/haptic
Texturing, lighting, Framing
Mechanics/how to lead player
Magy Seif El-Nasr
Combat System
Physics
Leveling up and progression
Sound
Current Work
• Testing Metrics for Engagement
o Playtesting to tune the design
o Game Analytics
Figure 3: Analysts can minimize the bottom part of the interface.
They can also open graphs (or maps) in new windows.
Zhengxing Chen
Introductions
About Zhengxing Chen
Email : [email protected]
•
Second year Computer Science PhD student working with
Prof. Magy Seif El-Nasr
•
Research topic: feature extraction and selection for game
data analysis
•
Most of my software engineering experience comes from
academic research projects. I am familiar with Java, Python,
Git, MongoDB and Android development.
•
Have one exer-game published on Google Play Store
Swapnil K Mahajan
Introductions
About Swapnil K
Mahajan
Email : [email protected]
•
•
•
•
•
•
Enrolled in second semester of MS - CS at NEU
Completed under graduation in
Information Technology from Pune University, India.
Prior to joining NEU for MS in CS, I have worked with Infosys and Tata
Consultancy Services, India for 7 years.
I started as a Software Engineer and worked on developing various
tools and then went on to work as Team lead.
I have experience of working across Telecom, Energy and Banking
domains
Majority of my work involved Automation of manual processes to
reduce human efforts and errors.
About Swapnil K Mahajan
(Cont)
Email : [email protected]
•
I have experience of working on agile software development model
(Scrum).
•
Other than software development, I have also handled tasks of
Release – Deployment Management and Change Management.
•
I have special interests in databases development and have
experience in improving the performance of legacy systems by
tuning the code as well as restructuring existing databases.
•
Technologies I have mostly worked on include Shell, Perl scripting,
Oracle , MySQL, apache, and JAVA
Akshay Raje
Introductions
About Akshay M Raje
Email: [email protected]
• I’m in the second semester of MS in Computer Science at NEU.
• My academic interests include the broad fields of Software
Engineering and Artificial Intelligence.
• I graduated in Computer Engineering from University of Mumbai,
India and worked as a Senior Systems Engineer at Infosys Limited,
India for 2.5 years.
• Besides my main responsibility of Application Development and
Maintenance, I built internal tools for the team to improve
productivity and to speed up delivery times.
About Akshay M Raje
Email: [email protected]
• Throughout my academic and professional career, I have
handled various Software Development Lifecycle activities –
Requirements Analysis, High Level Design, Development,
Testing, Deployment and Maintenance.
• The main technologies I have worked on include : C#.NET,
ASP.NET MVC, Java, Python and PL/SQL.
• I can help to improve system design, offer suggestions on
writing maintainable code and give technical help in general.
Prashanth Rajendran
Introductions
About Prashanth
Rajendran
Linkedin : http://www.linkedin.com/in/prashr
Email : [email protected]
•
•
•
•
•
•
Second semester MSCS student.
Completed under graduation in
Software Engineering from India.
Before joining NEU I was working as a Software Engineer at Intel, India
for 4 years and 2 months.
I have worked in almost complete life cycle of software engineering :
Requirements gathering, Design, Development, Unit Testing and
Deployment.
I have worked in both front-end (primarily stand alone UI) and
back-end development.
I have worked with Java, C++, C#.NET, Python and Oracle.
Abhijeet Sharma
Introductions
About
Abhijeet Sharma
Email: [email protected]
• Graduate Student pursuing MS in Computer Science at NEU.
• Academic interests include Business Intelligence and Data Mining.
• Worked as a Senior Systems Engineer at Infosys Limited, India for 4 years.
• Experience with delivering end-to-end Business Intelligence solutions for
clients involved in Retail and Logistics.
• Responsibilities included Data model design, building efficient Data
warehouse and publishing value oriented Reports for business needs,
using Scrum Agile software development methodology.
• Familiar with Python, Racket, Git, Oracle, Teradata 12, Datastage and
OBIEE.
Teaching Method
• Few Lectures to orient you towards specific concepts,
models, and documentation
• Labs: Tutorials on software – Project management, code
version control, etc.
• Studio:
o
o
o
o
Group Work
Code Walkthroughs
Software Structure Reviews
Group Performance and Management Reviews
• Teams 4-5
o Each Master Assistant will oversee 4-5 teams
o Chen and I will oversee all groups
Course Communication
• Class Meeting: We will meet twice a week
• Piazza
• Management: All Master Assistants will be part of
project management site for the team they oversee
• Lab or Studio classes – code and software reviews
Evaluation
• Project Plan and Deliverables – all up to the team, a plan
is due January 28th and can be adjusted but need to be
approved.
Requirement: need to submit 3 iterations of software and
testing results and a final
• Attendance (20%)
• Individual Reviews (20%) – done monthly based on data
tracked daily
• Group Reviews (60%)
o Iteration 1-3 (15% each)
o Final 15%
o Based on Documentation, Software Quality and feedback
adjustments
Introduction to Software
Development
Customer
Programmer
First law of software engineering
Software engineer is willing to learn the problem domain
(problem cannot be solved without understanding it first)
Slides adopted from: Ivan Marsic, Rutgers
Customer:
Requires a computer system to achieve some business goals
by user interaction or interaction with the environment
in a specified manner
System-to-be
User
Software-to-be
Environment
Software Engineer’s task:
To understand how the system-to-be needs to interact with
the user or the environment so that customer’s requirement is met
and design the software-to-be
May be the
same person
Programmer’s task:
To implement the software-to-be
designed by the software engineer
Slides adopted from: Ivan Marsic, Rutgers
Example: ATM
7
4
1
0
2
5 3
8 6
9
Communication link
ATM machine
Bank
customer
Slides adopted from: Ivan Marsic, Rutgers
Bank’s
remote
datacenter
Example: ATM
Domain Model
Domain model
created with help
of domain expert How may I
help you?
Transaction
record
Cash
Bookkeeper
Speakerphone
Safe keeper
Safe
Phone
Window clerk
Datacenter
liaison
Dispenser
Bank’s
remote
datacenter
Customer
Slides adopted from: Ivan Marsic, Rutgers
Example: ATM
A
Enter
your PIN
C
B
D
Verify
account
XYZ
Verify
this
account
Typing in
PIN number
…
E
How may
I help
you?
Withdraw
$60
Account
valid.
Balance:
$100
XYZ valid.
Balance:
$100
F
G
Release
$60
Dispense
$60
Record
$60 less
H
Dispensing!
Please take
your cash
Slides adopted from: Ivan Marsic, Rutgers
Steps to Developing Software
 Method = work strategy
 The Feynman Problem-Solving Algorithm:
(i) Write down the problem (ii) think very hard, and (iii) write
down the answer.
 Waterfall
 Unidirectional, finish this step before moving to the next
 Iterative + Incremental
 Develop increment of functionality, repeat in a feedback
loop
 Agile
 User feedback essential; feedback loops on several levels
of granularity
Slides adopted from: Ivan Marsic, Rutgers
Waterfall Model
Requirements
Design
Implementation
Testing
Waterfall
method
Deployment &
Maintenance
Unidirectional, no way back
finish this step before moving to the next
Slides adopted from: Ivan Marsic, Rutgers
UML: Unified Modeling Language
«interface»
BaseInterface
ClassName
# attribute_1 : int
# attribute_2 : boolean
# attribute_3 : String
Three common
compartments:
Actor
1.
Classifier name
2.
Attributes
3.
Operations
+ operation()
+ operation_1() : void
+ operation_2() : String
+ operation_3(arg1 : int)
Class1Implement
Class2Implement
+ operation()
+ operation()
Stereotype
«» provides
additional info/
annotation/
explanation
Inheritance
relationship:
BaseInterface
is implemented
by two classes
Software Class
Comment
Software Interface Implementation
instance1 : Class1
instance5 : Class2
doSomething()
instance8 : Class3
doSomethingElse()
Interaction Diagram
doSomethingYetElse()
Online information:
http://www.uml.org
Slides adopted from: Ivan Marsic, Rutgers
Understanding the Domain
• Actors
o Agents external to the system
• Concepts/ Objects
o Agents working inside the system
• Use Cases
o Scenarios for using the system
Slides adopted from: Ivan Marsic, Rutgers
ATM: Actors
1
7
4
0
Bank customer
8
5
2
9
6
3
System
(ATM machine)
Bank’s remote
datacenter
Slides adopted from: Ivan Marsic, Rutgers
ATM: Concepts
Window clerk
Datacenter
liaison
Bookkeeper
Safe keeper
Dispenser
Speakerphone
Telephone
Transaction
record
Safe
Cash
Slides adopted from: Ivan Marsic, Rutgers
ATM: Use Case
A
B
Verify
account
XYZ
Enter
your PIN
C
How may
I help
you?
1
4 2
7 85 6 3
0 9
1
4 2
7 85 6 3
0 9
XYZ valid.
Balance:
$100
Typing in
PIN number
…
D
E
Please take
your cash
7
4
1
0
Collecting
cash …
Withdraw
$60
8
XYZ
withdrew
$60
2
5 3
6
9
Acknowledged
Slides adopted from: Ivan Marsic, Rutgers
Software Measurement
• What to measure?
o Project (developer’s work),
for budgeting and scheduling
o Product,
for quality assessment
Slides adopted from: Ivan Marsic, Rutgers
Sizing the Problem
• Step 1:
Divide the problem into small parts
• Step 2:
Estimate relative sizes of all parts
Size(  ) = 4
Size(  ) = 7
Size(  ) = 10
Size(  ) = 3
Size(  ) = 4
Slides adopted from: Ivan Marsic, Rutgers
Agile Process Estimation
Slides adopted from: Ivan Marsic, Rutgers
Estimation Error
Estimation
error
Requirements
Start
Design
Implementation
Completion
Time
The cone of uncertainty starts high and narrows down to
zero as the project approaches completion.
Slides adopted from: Ivan Marsic, Rutgers