jjnkl


Fichier Détails

Cartes-fiches 37
Langue English
Catégorie Informatique
Niveau Université
Crée / Actualisé 17.12.2019 / 19.12.2019
Lien de web
https://card2brain.ch/box/20191217_ese
Intégrer
<iframe src="https://card2brain.ch/box/20191217_ese/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>

Why Software Engineering?

—Where did the specification come from?

—How do you know the specification corresponds to the user’s needs?

—How did you decide how to structure your program?
—How do you know the program actually
meets the specification? —How do you know your program will always work correctly? —What do you do if the users’ needs change?

—How do you divide tasks up if you have more than a one-person team?

What is Software Engineering?

State of the art of developing quality software on time and within budget

Multi person construction of multi version software

Software engineering is different from other engineering disciplines (not constrained by physical law)

(Engineering practices cover not only technological aspects of the products being built, but also such diverse aspects such as planning, process management, and quality standards.

Software development activities

Requirements Collection: Establish customer's needs

Analysis: Model annd specify the requirements ('what')

Design: Model and specify a solution ('how')

Implementation: Construct a solution in a software

Testing: Validate the solution against the requirements

Maintenance: Repair defects and adapt the solution to new requirements

(these are ongoing activties not sequential phases)

Why is the waterfall model unrealistic? What are the problems?

- Because requirements must be frozen too early in the life cycle

- Because requirements are validated too late

--------------------------------

  1. Iteration always occurs
  2. Difficult to state all requirements explicitly at the beginning of the project
  3. There won't be a working version of the software until late in the project

(Early prototyping helps to alleviate 2 and 3)

Why Iterative Development?

New requirements can be introduced at any point in the project. Implementation of prototypes may start before detailed design to explore requirements. Testing typically starts as implementation starts.

Plan to iterate your analysis, design and implementation

(You won't get it right the first time, so integrate, validate, test)

(You should only use iterative development on projects that you want to succeed)

Boehm's Spiral Lifecycle

With each iteration the system incrementally grows and evolves

Keyword: Iterative and incremental spiral lifecycle

Incremental Development

If possible always have a running version of the system, even if most functionality is yet to be implemented

Integrate new functionality as soon as possible

Validate incremental versions against user requirements

The Rational Unified Process

Framework for an iterative development lifecycle proposed by Rational Software.

Requirements Collection

User requirements are often expressed informally (features, usage scenarios)

With use cases and scenarios one can bridge the gap between the user domain and the technical domain

Although requirements may be documented in written form, they may be incomplete, ambiguous, or even incorrect.

 

Changing requirements

Validation is needed troughout the software cycle to cope with changing requirements

  • Build constant feedback into your project plan
  • Plan for change
  • Early prototyping can help clarify requirements

Requirements Analysis and Specification

 

Analysis is the process of specifying what a system will do

Provide clear understanding of what the system is about and what its underlying concepts are

The result of analysis is a specification document

Object Oriented Analysis

Models of the system which describe:

  • Classes of objects that exists inn the system
    • responsibilitiies of those classes
  • Relationships between those classes
  • Use cases and scenarios describing
    • Operations that can be performed on the system
    • Allowable sequences of those operations

 

What are the advantages of object-oriented software engineering methods?

 

 

tools to models domain concepts in code --> bridge gap between the application and technical domains

What is a prototype?

A prototype is s software program developed to test, explore or validate a hypothesis (i.e. to reduce risks)

What is an exploratory prototype?

Also known as a throwaway prototype, is intended to validate requirements or explore design choices.

  • UI Prototype - validate user requirements
  • Rapid prototype - validate functional requirements
  • Experimental prototype - validate technical feasibility

What is an evolutionary prototype?

An evolutionary prototype is intended to evolve in steps into a finished product

Iteratively grow the application, redesigning and refactoring along the way

(First do it, then do it right, then do it fast)

Design

Specifing how the specified behaviour (analysis) will be realized from software components. 

The results are architecture and detailed design documents

Design is an iterative process, proceeding in parallel with implementation

Object oriented design delivers models that do describe what?

 

How system operations are implemented by interacting 

How classes refer to one another and how they are related by inheritance

Attributes and operations associated to classes

 

Whats is Conway's Law?

Organization that design systems are constrained to produce designs that are copies of the communication structures of these organizations.

If your software team splits responsibilities in a certain way, you can expect that the software will also be structured in the same way.

What is implementation?

The activity of constructing a software solution to the customer's requirements

 

What is testing?

Testing is the process of validating that the solution meets the requirements.

 

What is the result from implementation and testing?

Fully documented and validated solution

Design, Implementation and Testing

  • Design, Implementation and Testing are iterative activities
    • The implementation does not 'implement the design' but rather the design document documents the implementation
  • System tests reflect the requirements specifiaction
  • Testing and implementation go hand-in-hand
    • Ideally, test case specification procedes design and implementationn

What is maintenance?

The process of changing a system after it has been deployed

Corrective maintenance: identifying and repairing defects

Adaptive maintenance: adapting the existing solution to new platforms

Perfective maintenance: implementing new requirements

What are maintenace activities?

  • Configuratio nand version management
  • Reengineneeringn (redesign and refactor)
  • Updating all analysis, design and user documentation

Repeatable, automated tests enable evolution and refactoring

What is the most important difference between Software Engineering and Programming?

 

Software Engineering must cope with the fact that real software projects are long-lived, and they evolve considerable over their lifetime.

Methods and Methodologies

Principle = general statement describing desirable properties

Method = General guidelines governing some activity

Technique = more technical and mechanical than method

Methodology = package of methods and techniques packaged

How does Software Engineering differ from programming? (WYSK)

  • Programming is a part of Software Engineering. Software Engineering is about applying engineering principles to create software. 

  • SE must cope with the fact that real software are long-lived, and they evolve considerable over their lifetime.

Why is the “waterfall” model unrealistic? (WYSK)

Because these processes run in parallel. It’s unrealistic for example to collect all requirements before even starting to design the project.

What is the difference between analysis and design? (WYSK)

  • Analysis: Process of specifying what a system will do - The result of analysis is a specification document. WHAT

  • Design: Process of specifying how the specified system behaviour will be realised from software components - The results are architecture and detailed design documents. HOW

  • Conclusion: Design is way more specific than analysis

Why plan to iterate? Why develop incrementally? (WYSK)

Because you won’t get it right the first time. The goal is to have a running program and then incrementally add functionality.

Why is programming only a small part of the cost of a “real” software project? (WYSK)

Because good software can be used over a long period of time. But what’s necessary is maintenance which accounts for 70% of total costs.

What are the key advantages and disadvantages of object-oriented methods? (WYSK)

Pro: Succesful in the construction of large, complex software systems.

Con: Steep learning curve, programs are slower and require more lines of code

What is the appeal of the “waterfall” model? Why do requirements change? (CYAT)

It looks cleaner. Gives the illusion that a project is proceeding according to a precise plan.

How can you validate that an analysis model captures users’ real needs? (CYAT)

  • By iteration and testing

  • CRC cards -> see next lecture

When does analysis stop and design start? (CYAT)

They are iterative activities so there is no clear distinction in-between. However, analysis is more about elaboration and design is about construction.

When can implementation start? (CYAT)

  • Ideally after test specification.
  • Design, implementation and testing are iterative activities