Software Engineering I Sept. 30, 2013 Notes Exam Review Format: 20 points True/False 80 points Short/Long answer definitions/descriptions drawing diagrams (UML) completing use cases analyzing problems Content: Look at the following sections of your text. The exam will cover only related topics that were covered in class. Chpt 1 Chpt 2 Chpt 3 - 3.2, 3.4 Chpt 4 - 4.1, 4.2.1 Chpt 6 Chpt 7 - 7.3 Chpt 10.1 - 10.3 (parts) What is SW Engineering? Solving client's problems through systematic development and change of software systems. Solutions are limited by the budget and time constraints of the client. Types of Software Custom Embedded Generic Real-time Possible stakeholders User Client Software Developers Development manager Others? Quality Attributes Usability Efficiency Reliability Maintainability Reusability Types of Projects Evolutionary -Corrective -Adaptive -Enhancement -Re-engineering Greenfield Framework Common Activities to Many SW Projects Domain Analysis Problem Definition Requirements -gathering -analysis -specification Design -UI -Architecture -Other details? Modeling -Use cases (actions) -structural (classes and objects) -dynamic and behavioral (states and transitions) Programming Quality Assurance -Reviews -Inspection -Testing Deployment Difficulties in SW Engineering Complexity/large number of details Uncertainty - about technology - about requirements - about SW Engineering skills Deterioration of SW Design Constant change Political risks OOP -Data abstraction -Procedural abstraction -Classes vs. objects -Parts of a class -Naming conventions (Java) -Instance vs. class variables -Methods, operations, and polymorphism -Inheritance hierarchy +Generalization vs. specialization -Abstract classes and methods -Overriding -Dynamic binding -Interfaces Reuse -Expertise -Standard design/algorithms -Libraries, classes, procedures, etc. -Frameworks -Complete applications Framework - reusable SW with a generic solution to a general problem Includes slots and/or hooks Horizontal vs. vertical Client-server architecture What can/should client do? What can/should server do? Making socket connections in Java. Thin vs. fat clients Domain Analysis Parts -Introduction -Glossary -Knowledge about domain -Clients and Users -Environment -Tasks and procedures currently performed -Competing SW -Similarities across domains Scope and Problem Definition What is the problem and what parts of it am I going to work on? Requirements Functional -inputs -outputs -data stored -computations -timing and synchronization Quality -Response time -throughput -resource usage -reliability -availability -recovery from failure -allow for maintainability/reusability Platform -technology to be used -computing platform Process requirements -development process to be used -cost and delivery date Use cases -sequence of action that an actor performs to complete a task -central use cases -parts of a use case + Name + Summary + Actors + Goals + Preconditions + Related Use Cases + Steps + Postconditions Types of use cases -Generalization -Extension -Inclusion Requirements Gathering Observation Interviewing Brainstorming Prototyping Testing White box Black box Types of errors/defects