Introduction to Software Development
Systems Life Cycle Analysis Collect and examine data Analyze current system and data flow Design Plan your system, its data flow, data structures, algorithms, and modules Implementation Schedule implementation goals and milestones Operation Installing the system How to use it? (documentation!) Maintenance Finding bugs and patching them WHY IS IT CYCLICAL?
Collecting Data Why is collecting data important? Where is the input coming from? What form is the data in? What kind of processing is required? Methods of data collection: Interviews Questionnaires Search existing documents Background research Observe people using the current system What are the advantages and disadvantages of each method?
Requirements Specification Software and hardware requirements Descriptions of the specific things that your system will be able to do Formal agreement (contract) between the client and the developer
Feasibility Report Brief description of the proposed system (no details) Estimated costs Responsibilities: Economic Technical Legal Estimated completion date
Alternative Solutions Cover advantages and disadvantages Examples: Different forms of input and output Centralized or networked system? What kind of interface? (GUI vs. CLI)
Systems Design Parts of a system: Input Input devices – keyboard, mouse, etc. Process CPU Storage – hard drive Output Output devices – monitor, printer, etc. Input, process, and output DATA
Data Capture and Presentation Input methods: Manual data entry – keyboard, mouse, etc. Direct data entry – OCR, barcode scanner Automatic data entry – sensors (e.g., temp) Output methods: Temporary display – CRT, LCD monitor Permanent display – printer Electrical/mechanical output – actuators, switches, relays
Flowcharts Data flow chart (e.g. voice recognition in case study) User action flow chart
Suitable Data Structures Basically, choose suitable data types and structures to store relevant information Examples: Name String Price double A bunch of numbers array or linked list
Modular Design Take the problem and break it into smaller components (modules) “top-down design” What are the advantages of modular design? Modules do not need to worry about other modules (e.g. storage module does not worry about the user interface) Modules can be reused
User Interfaces Command-line interface vs. Graphical User Interface What are the advantages and disadvantages of each?
Prototyping A very simple version of the system Preliminary solution ~ a prototype! Prototype used to get feedback before you spend too much time building the actual system Example: storyboarding a movie
Testing 3 types of test data: Normal data (including the limits) Extreme data (outside normal limits) Abnormal data Example: Assume a system that operates on numbers from Normal: (inclusive) Extreme: -50, 200 Abnormal: “bob”
Introducing a New System Parallel running Run the two systems at the same time (verify output against each other) Phased introduction Introduce parts of the system over a period of time Must also continue to use parts of the old system Direct changeover Completely change to the new system really quickly What are advantages and disadvantages of each?
Maintenance Analyze your system’s performance and usage Speed Memory and storage Big O! Fix errors and bugs Improve your system with new features
Documentation Design documentation EACH stage of the development cycle is documented IMPORTANT if changes are to be made later System documentation Technical manual (e.g., car repair manual) Data flow diagrams, commented code, class interface descriptions User documentation User manual – installation & operation
1.2 - Systems Analysis – Explain the importance of formulating a problem precisely – Discuss the aspects that must be considered in a specified problem – Identify the outcomes that an appropriate solution must produce to solve a specified problem – Identify the parts of a problem that can be solved appropriately using a computer – Identify the three basic control constructs of programming: accepting data, processing it, and outputting the results – Analyze a problem by decomposing it into modules
1.4 – Social Significance and Implications Analyze scenario and come up with something rational Example: What are the social implications involved in using electronic medical records?