2. Task: Build a Simplest Accounting S/W
• You’ve been offered to build a very basic
accounting software for Bangoo Banks Inc.
– You’ll need to collaborate with 3-4 other
developers.
– You’ll receive handsome amount of cash for full
functional software!
– Deadline: very, very strict. Say, couple of months?
3. What are you going to do?
• Divide the total project in visible sections, say:
– User Accounts
– Human Resource
– Accounting
– Etc…
• And started asking questions to your clients
how they want the program behave, design
database…
5. After some days… you felt like
integrating your works?
• But you figured out you need a change in some
part, you could change it, but others’ code can
break?
• You hardly understand what your friend means by
variable baln or function register()
• Your disc crashed and your codes are gone?
• You’ve created too many folders like code_old
code_working, code_new2, code_final… now
what?
• How do you merge everybody’s code to a full-
functional system?
6. Messed Up?
• Without putting your code in a function, you just wrote
it down, thinking, “Hey, I’ll not use this code anywhere
else! So Why do I need to put it in a function or class?”
• But, you never know…
– Client may change his mind
– New functionalities may appear in future
– And you’re very likely to duplicate same codes.
– Man is mortal. To fix buggy codes you’ll need to investigate
your whole project number of times you copy-pasted same
code.
• Hard to find bugs.
7. Software Evolves…
• If your software is usable, it will have changes
in it and have future releases.
• Clients will add new features, or users will
want changes.
8. After some days, you’re about to bring
some changes in your code.
12. Introducing SADD
• Systems…
– Step 1: Analysis
– Step 2: Design
– Step 3: Development
• Step 4: Evolve! Back to step 1
13. First Step: Systems Analysis
• Known as Requirement Analysis
• Extract information from your clients on what
the software is supposed to do.
• Place them on SRS Cards
• Useful to understand the total scope of
application, defining priority and leads to
modular design.
16. Step 2: Design your system
• Once you’re done with analysis, design it.
• The great majority of the types of errors found
in testing the code had originated in the
design phase
– See figure in next slide.
17.
18. Systems Design
• Following Design Patterns
– Why reinvent the wheel?
• Modular Design
– Loosely coupled code
– Easy to extend your program
– Code less. Reuse your code
• Build Wireframes
• Follow Single Responsibility Principle
19. Building Wireframe
• Create Mock-up/prototype of your application
before starting coding.
– Can be built using GUI tools very rapidly
– Client can know how your application will look
like/interact with users.
– Non functional.
24. Documentation
• You alone are not coding
– Others will work with your code
– You will work with other’s code.
• Provide Documentation
25. Take help of Development Tools
• You figured out you need a change in some
part, you could change it, but others’ code
can break?
• You hardly understand what your friend
means by variable baln or function
register()
• Your disc crashed and your codes are gone?
• You’ve created too many folders like
code_old code_working, code_new2,
code_final… now what?
• How do you merge everybody’s code to a
full-functional system?
27. Project Management Tools
• Coding is not your only responsibility.
– Issues are assigned to you by your Project
Manager
– Bug fixing tasks assigned to you
– You fix code and re-assign it to Tester.
• To simplify all these, various Tools are
available.
– Using these tools guarantee standards.
28. Tools: Revision Controlling
• Git is a powerful distributed version
controlling system.
– Stores complete history of your source code at
different stages of project life cycle.
– Easy merging of everyone’s copy of work.
– Distributed.
29. Project Management Tools
• Project Management applications come with
rich features like
– Role Management (PM, Tester, Designer,
Programmer,…)
– Bugs Reporting
– Issue Tracking & Assigning
– Gaunt Charts for schedule management
– Documentation