170 likes | 283 Views
Software Engineering. Introduction. Why are you here?. …alternatively, why do we think you need to be here? Why a course on software engineering? How is real-world programming different than what you have been doing so far?. Barry Boehm paper. You should have read it before class
E N D
Software Engineering Introduction
Why are you here? • …alternatively, why do we think you need to be here? • Why a course on software engineering? • How is real-world programming different than what you have been doing so far?
Barry Boehm paper • You should have read it before class • Make sure you study it for the exams • Take notes!
What is SE? • Software engineering (SE) is a profession “dedicated to designing, implementing, and modifying software so that it is of higher quality, more affordable, maintainable, and faster to build“
What’s wrong with the previous definition? • A better definition: “SE is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software” – IEEE • Have you been doing this in your classes so far? • Parnas (super famous CS guy) defined software engineering as the “multipersonconstruction of multiversionsoftware” • Your projects so far were (probably) neither multipurpose nor multiversion
Observations from/after Boehm • Maintenance is expensive • Name three ways modern SW is different from HW • Size, malleability, wear, novelty • Fred Brooks • Accidental versus essential difficulties • No silver bullet; cannot be fixed by tools alone
Software project failure • “Most” software projects fail • This failure is almost never due to developer incompetence (alone) • If we are late, we can just add more people! • Who needs requirements; just start coding! • Requirements are malleable anyway! • And documentation just slows us down! • Besides, once we ship, we’re done!
How can SE help? • A set of tools and ideas that can increase the likelihood of success
So what are these tools/ideas? • (things we will cover this semester) • A generic approach • Rigor and formality • Separation of concerns • Modularity • Abstraction • Anticipation of change • Generality • Incrementality
Leading to a Generic Framework • (things we will cover this semester) • Communication • Heavy collaboration with the customer, other stakeholders and encompasses requirements gathering and related activities • Planning • Establish a plan for the work. Technical task to be conducted, risks, needed resources, work products to be created, and a schedule • Modeling • Creation of models to allow the customer and the developer to better understand the requirements and design that will achieve those requirements • Construction • Combines code generation and testing required to uncover errors in the code • Deployment • The software (as a complete entity or partially complete increment) is delivered to the customer who evaluates it and provides feedback.
And the framework is applied • This is called the process model • The framework activities will always be applied on every project ... BUT • The tasks (and degree of rigor) for each activity will vary based on: • the type of project • characteristics of the project • common sense judgment; concurrence of the project team
Example • Which activities would you spend the most time on for • Space shuttle controller? • Web-based calendar? • Embedded controller in your refrigerator? • Daily fortune text messenger? • Framework Activities • Communication • Planning • Modeling • Analysis of requirements • Design • Construction • Code generation • Testing • Deployment
A basic model: Waterfall • Benefit: • Easy to follow • Limitation: • Often associated with project failure. Why might that be?
Model types • Prescriptive Models (like waterfall): • Want to limit and change • Provide repeatability/consistency • Coordinate teams • Agile models • Respond to change • Working software rather than documentation • Individuals and interaction • Which would you use for {a large team, a webapp, the space shuttle controller}?
Umbrella activities • Software project management • Formal technical reviews • Software quality assurance • Software configuration management • Work product preparation and production • Reusability management • Measurement • Risk management