What is Software Engineering?
- is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software.
Engineering
- is the science, discipline, art and profession of acquiring and applying technical, scientific and mathematical knowledge to design and implement materials, structures, machines, devices, systems, and processes that safely realize a desired objective or inventions.
Software Engineering’s Focus
-
To solve problems
2 Parts
- Analysis – breaking it into pieces that we can understand and try to deal with.
- Synthesis – putting together of a large structure from small building blocks.
Analysis and Synthesis
Software Engineering Layers
- Layers according to Roger Pressman
- Process layer is the foundation
- Methods provide the technical “how-to’s” for building software
- Tools provide automated or semi automated support for the process and methods.
Relationship between Computer Science and Software Engineering
Generic Process Framework
Used as a basis for process models and is applicable to the vast majority of software projects:
- Communication -collaboration with customer & other stakeholders
- Planning- description of the tasks to be conducted, risks, resources required, work products to be produced.
- Modeling –creation of models
- Construction – code generation and testing
- Deployment – delivered to the customer
What is a Process Model?
- Originally proposed to bring order to the chaos of software development
- Useful to software engineering work and an effective roadmap for software teams
- Define a distinct set of activities, actions, tasks, milestones and work products that are required to engineer high-quality software.
Problems with Waterfall Model
- Real projects rarely follow the sequential flow that the model proposes.
- It is difficult for the customer to state all requirements explicitly.
- Working version of the program will not be available until late in the project time-span.
Problems with Incremental Model
-
Each additional build has to be incorporated into the existing structure without degrading the quality of what has been build to date.
-
The incremental models can easily degenerate into the build and fix approach.
-
Design errors become part of the system and are hard to remove.
-
Clients see possibilities and want to change requirements.
Rapid Application Development (RAD) Model
- An incremental process model that emphasizes short development cycle
- “High-speed” adaptation of the waterfall model.
Drawbacks of RAD
-
For large projects, RAD requires sufficient human resources to create the right number of RAD teams.
-
If developers & customers are not committed to rapid-fire activities, RAD projects will fail.
-
If the system cannot be properly modularized, building the components will be problematic
-
If high-performance is an issue, RAD may not work.
- RAD may be inappropriate when technical risks are high.
Prototyping Model
-
Assists the software engineer and the customer to better understand what is to be built when requirements are fuzzy.
Drawback of Prototyping Model
Customer sees what appears to be a working version of the software and presumes that it is the final thing.
The developer often makes implementation compromises in order to get a prototype working quickly.
Spiral Model
- It couples the iterative nature of prototyping with the controlled and systematic aspects of the waterfall model.
- Proposed by Boehm
Drawbacks of the Spiral Model
- It may be difficult to convince customers that the evolutionary approach is controllable.
- It demands risk assessment expertise and relies on this expertise for success.
- If a major risk is uncovered and managed, problems will occur.
0 comments:
Post a Comment