Software and Systems Design and Development 1 "software
Software and Systems Design and Development 1 "software engineering"?: the "art" of building and maintaining software systems "software engineering is a discipline whose aim is the production of fault-free software, delivered on time and within budget, that satisfies the users needs. Schach, Object-Oriented and Classical Software Engineering, 5th ed., Mc-Graw-Hill 2002, p. 4 in embedded systems we extend these goals to mixed hardware / software systems, namely:
--fault-free / fault-tolerant --delivered on time --delivered within budget constraints --MEETS THE USERS NEEDS 2 Importance of fault-free Software bugs can be lethal. The 2003 North America blackout was triggered by a local outage that went undetected due to a race condition 55 million people were without power Smart ship USS Yorktown was left dead in the water in 1997 for nearly 3 hours after a divide by zero error So can hardware errors or bad design: The Therac-20 had hardware interlocks to prevent lethal doses of radiation that were removed in the
Therac-25. Thus, unknown software defects that were effectively neutralized in the Therac-20 were exposed in the Therac-25 and caused several deaths (both machines used the same basic software). 3 Product Life Cycle Easier (cheaper) to fix mistakes harder to fix mistakes
--Gather requirements (levels:1. functional 2. performance 3. implementation 4. use 5. maintenance) --Develop specifications --Design --Implement --Test --Maintain these steps are not independent; process is not really "linear" 4
People (Stakeholders)Roles, Goals, Functions Role Responsibility Customer High level requirements, project scope User What tasks must system carry out? What is level of expertise?
System salesperson Get requirements; delivery dates, cost Business Manager Organize, track work Technical Manager Manage technical issues Developer
Design, implement, test Technical Writer Documentation, manuals Goals / Functions conflicts? 5 Questions to Think About some points to ponder: "software crisis"--systems become more and more complex: --what can we automate?
--what can we put into hardware? will this improve reliability? --how can we verify/ test such complex systems? "hardware/software" boundary --how can we do "co-design"? --where is the boundary? types of systems --how do important application-specific systems differ? --what impact do differences have on development? --which systems will be most important in coming years? 6 Important System Types Some Common System Typeswhat is the same/different?
Databases Communication systems Entertainment systems Web-based applications Medical systems Manufacturing / transportation systems Defense systems Simulation programs to support engineering and science Parallel/distributed applications Systems for consumer products-home, entertainment Intelligent systems / robots http://www.youtube.com/watch?v=7fYMxaBTqls Utilities for computer systems (compilers, routers, e.g.) Utilities for general users (spreadsheets, e.g.) 7
Engineering Phases Engineering: Systematic, disciplined quantifiable approach to the development, operation and maintenance of the product. Three distinct phases product life cycle): Analyze Requirmnts, Spec. Definition phase: WHAT, i.e., what information, function, performance
Develop Design, Code. Development phase: HOW Maintain Support Phase: CHANGE, i.e., correction, adaptation, enhancement, prevention
8 Developing a program / system How do you develop a program / system from scratch? For example: --what did you do in your first computing/ dig design class? --what do you do differently now? --what good / bad practices have seen in co-op / jobs? --what are differences for small / large projects? 9 Capability Maturity Model
CMM : capability maturity model--defines level of the development process itself 1. Initial: ad hoc 2. Repeatable: basic project management processes in place 3. Defined: documented process integrated into an organization-wide software process 4. Managed: detailed measures are collected 5.Optimizing--desired level: Continuous process improvement from quantitative feedback Question: what process models have you used? How large / complex was the project? What level did the associated process represent? 10 Process Model
Process Model: --A development strategy that encompasses the process, methods, and tools --Specific model is chosen based upon the project/application, the methods/tools to be used, resources available, and the deliverables required basic model: problemdevelopintegrate each step is carried out recursively until an appropriate level of detail is achieved 11 Process Model Types
Process Model Types: Prescriptive Model includes a specific set of tasks, along with a workflow for these tasks and definite milestones and outcomes for each task; end result is the desired product "Agile" Model tends to be simpler than prescriptive models; emphasis is on incremental development, customer satisfaction, and minimal process overhead "Mathematical" Formal Method Model stresses mathematical rigor and formal proofs that product is meeting carefully-defined goals 12 Some Common Prescriptive Models
Some common models used in practice: Prescriptive: "Basic": Linear Sequential (Waterfall) Model Prototyping Model "Evolutionary" (product evolves over time): Incremental Model Component-based Model Formal Methods Z-based methods Agilefor products requiring frequent updates / releases 13 Extreme Programming
Waterfall Model Linear Sequential Model (waterfall model): Sequential approach from system level through analysis, design, coding, testing, support--oldest and most widely used paradigm Analysis Design Code Test Maintain
Advantages: --better than nothing --can be appropriate for small, well-understood projects Disadvantages: --Real projects rarely follow a sequential flow --Requirements usually not fully known. --Working version not available until late in project. 14 Prototyping Model Prototyping Model: customer defines set of general objectives; no details on input, processing, output requirements; may be unsure of algorithm efficiency, adaptability, OS, human/machine issues
Advantages: --Focuses on what is visible to customer --Quick design leads to a prototype --Prototype evaluated by the customer who can refine requirements --Ideal mechanism for identifying and refining SW requirements Disadvantages: --Customer sees something that appears to work and wants it. --Less than ideal choices move from prototype to product SW Prototyping: A-->D-->C-->T-->M (A=analysis, D=design, C=coding, T=testing, M=maintenance) 15
Evolutionary Models Evolutionary Models--useful for: Business and product requirements which change during development. Tight market deadlines. Cases where core requirements are understood but details of extensions are not known. 16 Incremental Model Incremental Model:
Elements of linear sequential (applied repetitively) with prototyping. As result of use, a plan is developed for next increment. Advantages: Unlike prototyping, an operational product is delivered at each increment. Disadvantages: Variable staffing at each increment (task dependent). Risk analysis must be done at each increment. Incremental: A-->D-->C-->T-->M-->A-->D-->C-->T--> -->M (A=analysis, D=design, C=coding, T=testing, M=maintenance) 17 Component Based Development
Component Based Development: emphasizes the creation of classes that encapsulate data and the algorithms to manipulate the data. Reusability. Evolutionary and iterative. But composes applications from prepackaged SW components (classes) Process steps: --candidate class is identified --library is searched for existing class --if none exists, then one engineered using object-oriented methods. Advantages: Faster development and lower costs. Disadvantages: requires expertise in this type of development Component based: A-->D-->Library-->Integrate-->T-->M
C (A=analysis, D=design, C=coding, T=testing, M=maintenance) 18 Process Models--Comparison Graphical comparison of basic and evolutionary models: Basic waterfall model: A-->D-->C-->T-->M (A=analysis, D=design, C=coding, T=testing, M=maintenance) Prototyping: A-->D-->C-->T-->M Incremental: A-->D-->C-->T-->M-->A-->D-->C-->T--> -->M Component based:
A-->D-->Library-->Integrate-->T-->M C 19 Formal Methods Formal Methods: formal mathematical specification of SW. Uses rigorous mathematical notation. Advantages: --Ambiguity, incompleteness, inconsistency found more easily. --Serves as a basis for program verification. --promise of defect-free SW Disadvantages:
--Very time consuming --extensive training required --not a good communication mechanism (especially for customer) --handles syntax well; not so successful with semantics uses: Safety critical SW (medicine and avionics) or when severe economic hardship will be incurred by developer if error occurs 20 Extreme Programmingan Agile Process Model Extreme Programming-An Agile Process Model
21 Review of Process Models In process models discussed previously: Basic method: problemdevelopintegrate each step is carried out recursively until an appropriate level of detail is achieved 22 Introduction to Extreme Programming Introduction to "Extreme Programming" (XP):
references: 1. Bergin & Williams, SIGCSE 2002; 2. www.extremeprogramming.org Idea: allow project to develop incrementally, building in new features and changed requirements; involve customer as an integral part of the process; meet tight market deadlines XP is one example of the newer "Agile Processes"--designed for quick releases, good for competitive businesses 23 12 Practices of XP
Metaphor 1. metaphor describe project in terms of a metaphor to give a consistent picture of the system and where modifications can be made ex: "paycheck goes down an assembly line along which new information is added" finding a good metaphor may not always be possible 25
Release Planning 2. release planning requirements are given in terms of "user stories" each "story" is a short (~ 1 index card) description of what the customer wants, in natural language requirements are prioritized by customer resources and risks are estimated by developer "planning game"--each increment is restricted to a "time box"; highest priority and highest risk user stories are in early time boxes; after each increment, replay the "planning game" 26 Testing
3. testing development is test-driven tests are written before code unit must run at 100% before going on acceptance tests written with customer; they act as "contract", measure progress 27 Pair Programming 4. pair programming two engineers, one task, one computer "driver" controls keyboard & mouse "navigator" watches, identifies defects, participates in
brainstorming roles are rotated periodically (you use this approach in week 1 lab to gain some java skills) 28 Refactoring 5. refactoring improve design of existing code, but don't change functionality relies on testing; no new errors can be introduced 29 Simple Design
6. simple design no big design up front "do the simplest thing that could possibly work" don't add features you won't need may use "CRC cards" 30 Collective Code Ownership 7. collective code ownership code belongs to project, not individual engineers may browse into and modify ANY class
31 Continuous Integration 8. continuous integration pair writes unit test cases & code pair tests code to 100% pair integrates pair runs ALL test cases to 100% pair moves on to next task 32 On-Site Customer
9. on-site customer clarifies stories, participates in critical decisions developers don't make assumptions no waiting for decisions face-to-face communication 33 Small Releases 10. small releases timeboxed as small as possible, but with "business value" get feedback early and often do planning game after each iteration
34 40-Hour Work Week 11. 40-hour work week burning midnight oil kills performance tired developers make more mistakes workforce is more content 35 Coding Standards 12. coding standards
use coding conventions write intention-revealing code 36 13th Practice "13th practice": stand up meeting 15 minutes at start of each day stand up to keep meeting short each participant says --what they did yesterday --what they plan to do today --any obstacles they are facing
pairs can be reformed based on meeting 37 Contrast with Waterfall Model example contrasts: "waterfall model || XP planning: upfront || incremental control of project, "people" questions: centralized || distributed customer involvement: only for specification, reviews || ongoing risk analysis, scheduling: all at beginning || in increments code development: assigned sections || collective ownership testing: specific phase || ongoing and required to 100% project type: well-understood, static || new, dynamic 38
Analysis and specification in XP Question 1: How are analysis and specification done --in the extreme programming model? --in the waterfall model? Question 2: How adaptable are these process models to embedded systems (mixed hardware / software systems)? 39
B+ Tree What is a B+ Tree Searching Insertion Deletion What is a B+ Tree Definition and benefits of a B+Tree 1.Definition: A B+tree is a balanced tree in which every path from the root of the tree to a...
Impressionism! It was a shifting and nebulous movement; exhibited together in the 1870s and 1880s. A hostile critic labeled the movement "Impressionism" in response to the painting "Impression: Sunrise" by Claude Monet. The term Impressionism had been used before to...
The ideal gambler only gambles with money that he / she can afford to lose and never see again. Licensed operators offer corporate social programmes - giving back to the community . The legal gambling industry is well-regulated to protect...
Marc UZAN Perturbateurs endocriniens FMC Ducuing 2017 * EXPOSITION PROFESSIONNELLE En plus de l'exposition commune à l'ensemble de la population, les professionnels de l'agriculture, des cosmétiques, des industries chimiques, les peintres, les coiffeuses et les poseuses d'ongles sont particulièrement exposés...
A useful process for planning your evaluation is to develop a "theory of change" for your service. This can be useful way of articulating and providing a visual representation of the links between the various activities of service and how...
Doubly fed asynchronous generators (DFAG) are usually a conventional wound rotor induction generator with an ac-dc-ac power converter in the rotor circuit. Power that would have been lost in external rotor resistance is now used.
Let our souls magnify you, oh Lord Let our spirits rejoice in God our Saviour Look with favour on us, lowly servants, so that we may receive your blessing Do great things for us so we can speak your holy...
Ready to download the document? Go ahead and hit continue!