View
212
Download
0
Embed Size (px)
Citation preview
Computer Science Software Engineering Slide 1
Review The need for software engineering Processes
• Waterfall
• Iterative waterfall
• Evolutionary
• Formal systems
• Reuse-oriented
• Iterative• Incremental
• Spiral
Computer Science Software Engineering Slide 2
Barzun's Laws of Learning The simple but difficult arts of paying attention, copying accurately, following an argument, detecting an ambiguity or a false inference, testing guesses by summoning up contrary instances, organizing one's time and one's thought for study -- all these arts -- cannot be taught in the air but only through the difficulties of a defined subject. They cannot be taught in one course or one year, but must be acquired gradually in dozens of connections.
Computer Science Software Engineering Slide 3
The software design process
Architecturaldesign
Abstractspecification
Interfacedesign
Componentdesign
Datastructuredesign
Algorithmdesign
Systemarchitecture
Softwarespecification
Interfacespecification
Componentspecification
Datastructure
specification
Algorithmspecification
Requirementsspecification
Design activities
Design products
Computer Science Software Engineering Slide 4
The testing process
Sub-systemtesting
Moduletesting
Unittesting
Systemtesting
Acceptancetesting
Componenttesting
Integration testing Usertesting
Computer Science Software Engineering Slide 5
System evolution
Assess existingsystems
Define systemrequirements
Propose systemchanges
Modifysystems
Newsystem
Existingsystems
Computer Science Software Engineering Slide 6
Requirements document Supported activity list HCI description Solved problems list Information sources list Information-requesting organizations Checks and Balances Security and fault-tolerance requirements Interoperating systems list Estimates of information capacity and growth Project time frame Prioritization of requirements Ethical concerns
Computer Science Software Engineering Slide 7
Eliciting and Validating Requirements – Start of Design
Informal Scenarios • Detailed walkthrough of scenario
UCCD – Use-case centered design Use-cases – Use-case diagrams Scenarios Primary Classes
• Nouns classes
• Properties (State, service, multiple/common attributes/methods, essential requirement)
Computer Science Software Engineering Slide 8
UML Use-Case diagrams Deployment Diagrams Class Diagrams State Diagrams Sequence diagrams Object diagrams
Computer Science Software Engineering Slide 9
Architecture Skeleton
Top level design of system Persistence HCI
Computer Science Software Engineering Slide 10
Design with Reuse Component-based development
• Provides/Requires interfaces
• Frameworks - MVC
Application families• Resource management system – specialized for LMS
Design Patterns• Observer
Computer Science Software Engineering Slide 11
Architecture - Distributed Performance Security Safety Availability Maintainability Models
• Repository, Client-server, centralized/event-triggered control, Object Models
Computer Science Software Engineering Slide 12
Distributed Systems Client-server
• Server-consumer model
• Data management, application processing, presentation
• Thin and fat clients
Three Tier Architectures Distributed objects
• Peer to peer
• CORBA
Computer Science Software Engineering Slide 13
ORB-based object communications
o1 o2
S (o1) S (o2)
IDLstub
IDLskeleton
Object Request Broker
Computer Science Software Engineering Slide 14
Verification and Validation Verification
• Are we building the product right?
Validation• Are we building the right product?
Unit and integration testing Black box versus White box testing
Computer Science Software Engineering Slide 15
EngineerSoftware Engineer
Responsibilities:·Design and develop in C tests to validate ASIC hardware and software features and functionality·Design and develop tests for hardware and software specification conformance·Analyze protocol and software design - code, and create detailed test descriptions ·Develop software and/or system configurations to execute test descriptions·Execute test in VERA simulator, on FPGA boards, or on a system-level box
Key Role: Contribute significantly to a project involving the design and development of software for a scanning and message forwarding system. Qualifications:
BS or MS degree in CS 2+ years of experience in C++ programming Experience with Java and object-oriented analysis and design Experience with Sun workstations running Solaris Experience with using tools such as Rogue Wave and Purify
Computer Science Software Engineering Slide 16
More :The responsibilities of this role include:Defining the functional requirements of the ApplicationsSoftware solution and designs solution to meet those requirementsAnalyzing situations or data to determine feasibility of design within time and cost requirementsDesigning and developing Software applicationsConsulting with other engineering staff to evaluate interface between hardware and software to maximize performance of the applicationsWriting code for individual components of Multi-Tier applicationsBuilding and executing Database Server scriptsMaintaining documentation of code and performs bug fixesConsulting with clients concerning maintenance of applications