560 likes | 700 Views
Software Development . Lecture 6. The Software Wolf. Software is like a wolf it looks normal until the moon comes out and it turns into a monster if: Missed deadlines Over budgets Not to desired quality We want the silver bullet to kill the monster
E N D
Software Development Lecture 6
The Software Wolf • Software is like a wolf • it looks normal until the moon comes out and it turns into a monster if: • Missed deadlines • Over budgets • Not to desired quality • We want the silver bullet to kill the monster • something to make software costs drop as rapidly as computer hardware costs do. “As we look to the horizon of a decade hence, we see no silver bullet. There is no single development, in either essence, technology or in management technique, that by itself promises even one order-of-magnitude improvement in productivity, in reliability, in simplicity”F.P Brooks Adv Software Engineering, By Asst Prof Athar Mohsin, MSCS 19, MCS-NUST
Essential vs. Accidental Difficulties • Essential: a characteristic of software • Difficulties inherent in the nature of software • Data sets, relationships among them, algorithms, and function invocation • Inherent properties of the essence of modern software system: Complexity, Conformity, Changeability, Invisibility • Accidental: a problem in today’s production methods • Difficulties related to the actual production process. • Complexity, varied domain, changeability and invisibility • The essence is what the software does and the accidents are the technology by which the software does the essence or by which the software is developed. Brooks • The requirements are the essence, while the language, tools, and methods used are the accidents. Adv Software Engineering, By Asst Prof Athar Mohsin, MSCS 19, MCS-NUST
Software Communities • The software development community has split • Web designers • Analysts/designers • Traditional skilled programmers • Software hackers • Academic community • Licensed company X internals specialists • … • These groups don’t understand each other’s languages, tools, and work methods • Each group has sub-groups who don’t understand each other’s languages, tools, and work methods • E.g. C, C++, Java Adv Software Engineering, By Asst Prof Athar Mohsin, MSCS 19, MCS-NUST
Software Development and Life-cycle 1. Requirements phase 2. Specification phase 3. Design phase 4. Implementation phase 5. 6. Maintenance phase 7. Retirement 5. Integration Phase • Many forms and variations of development process • Presence of feedback loops between the various stages of software process Adv Software Engineering, By Asst Prof Athar Mohsin, MSCS 19, MCS-NUST
Software Development • Requirements (Specification) phase • ... answers the question: what? • ... starts with the definition of requirements by the requirements specification team • Software Development phase • .. answers the question: how? • SW that is expected to meet the specification must be produced. • Design phase: alternative solutions to how the intended goals are accomplished • Implementation phase: actual code development Adv Software Engineering, By Asst Prof Athar Mohsin, MSCS 19, MCS-NUST
The domain of architecting The “why” The “what” System Features Architecture Qualities Satisfies Architecture S/W Requirements Constrain Architecture Representation System Quality Attributes Technology Produces Defines The “how” The “who” Follows Architect Process Skills Organization Stakeholders Defines role
Attributes of good software • SW should deliver the required functionality and performance to the user and should be maintainable, dependable and acceptable. • Maintainability • Software must evolve to meet changing needs; • Dependability • Software must be trustworthy; • Efficiency • Software should not make wasteful use of system resources; • Acceptability • Software must accepted by the users for which it was designed. This means it must be understandable, usable and compatible with other systems. Adv Software Engineering, By Asst Prof Athar Mohsin, MSCS 19, MCS-NUST
Timeline • Code & Fix • Software development started off as a messy activity • Not much of a plan, • The short term design decisions • Traditional methodologies: Heavyweight • Elicitation & documenting complete requirements • Architectural & High Level Design, Development and inspections • For some practitioners process centric view of development is frustrating • Waterfall • Lightweight methodologies- Agile practices • Several consultants have independently developed methodologies and practices, based on iterative enhancements • Gaining popularity in industry Adv Software Engineering, By Asst Prof Athar Mohsin, MSCS 19, MCS-NUST
Heavyweight Methodologies • Considered to be the traditional way of developing software: • Based on a sequential series of steps • Require defining and documenting a stable set of requirements • Many different heavyweight methodologies • Waterfall, RUP, Spiral • Heavyweight Characteristics • Predictive approach: • Plan out a large part of the software process in great detail for a long span of time • Comprehensive Documentation: • the big design upfront (BDUF) process • Process Oriented: • Define a process that will work well for all • Tool Oriented: • Project management tools, Code editors, compilers, etc Adv Software Engineering, By Asst Prof Athar Mohsin, MSCS 19, MCS-NUST
Heterogeneity in software Engineering • There will not be consensus on hardware platforms • There will not be consensus on operating systems • There will not be consensus on network protocols • There will not be consensus on programming languages • There must be consensus on models, interfaces and interoperability! Adv Software Engineering, By Asst Prof Athar Mohsin, MSCS 19, MCS-NUST
Unified Process • All efforts, including modeling, is organized into workflows and is performed in an iterative and incremental manner. Key features are: • It uses a component based architecture which creates a system that is easily extensible, promotes software reuse and intuitively understandable. • The component commonly being used to coordinate object oriented programming projects. • Uses visually modeling software such as UML: • UML represent its code as a diagrammatic notation to allow less technically competent individuals who may have a better understanding of the problem to have a greater input. • Manage requirements using use-cases and scenarios: • Use-cases and scenarios are very effective at both capturing functional requirements and help in keeping sight of the anticipated behaviors of the system. • Design is iterative and incremental: • This helps reduce project risk profile, allows greater customer feedback and help developers stay focused. • Verifying software quality is very important in a software project. • UP assists in planning quality control and assessment built into the entire process involving all member of the team. Adv Software Engineering, By Asst Prof Athar Mohsin, MSCS 19, MCS-NUST
Feature Driven Development • Does not cover the entire software development process but focuses on the design and building phases: • The first three phases are done at the beginning of the project. • The last two phases are the iterative part of the process: • These supports the Agile Development with quick adaptations to late changes in requirements and business needs. Adv Software Engineering, By Asst Prof Athar Mohsin, MSCS 19, MCS-NUST
Feature Driven Development • Develop an Overall Model: • A high level review of the system scope and its context is performed by the domain expert. • Documented requirements such as use cases or functional specifications are developed. • Build a Features List: • A categorized list of features to support the requirements is produced • Plan by Feature: • The development team orders the feature sets according to their priority and dependencies. • Schedule and milestones are set for the feature sets. • Design by Feature & Build by Feature: • Features are selected from the feature set. • The design by feature and build by feature are iterative procedures during which the team produces the sequence diagrams for the assigned features. Adv Software Engineering, By Asst Prof Athar Mohsin, MSCS 19, MCS-NUST
Rapid software development • Rapid development and delivery is now often the most important requirement for software systems • Businesses operate in a fast –changing requirement and it is practically impossible to produce a set of stable software requirements • Software has to evolve quickly to reflect changing business needs. • Rapid software development • Specification, design and implementation are inter-leaved • System is developed as a series of versions with stakeholders involved in version evaluation • User interfaces are often developed using an IDE and graphical toolset. Adv Software Engineering, By Asst Prof Athar Mohsin, MSCS 19, MCS-NUST
Agile Methods • These methods: • Focus on the code rather than the design • Are based on an iterative approach to software development • Are intended to deliver working software quickly and evolve this quickly to meet changing requirements. • The aim of agile methods is to reduce overheads in the software process (e.g. by limiting documentation) and to be able to respond quickly to changing requirements without excessive rework. • Product development where a software company is developing a small or medium-sized product for sale. • Custom system development within an organization, where there is a clear commitment from the customer to become involved in the development process and where there are not a lot of external rules and regulations that affect the software. Adv Software Engineering, By Asst Prof Athar Mohsin, MSCS 19, MCS-NUST
The principles of agile methods Adv Software Engineering, By Asst Prof Athar Mohsin, MSCS 19, MCS-NUST
Software Requirements Vs Design • In principle, requirements should state what the system should do and the design should describe how it does this. • In practice, requirements and design are inseparable • A system architecture may be designed to structure the requirements; • The system may inter-operate with other systems that generate design requirements; • The use of a specific architecture to satisfy non-functional requirements may be a domain requirement. • This may be the consequence of a regulatory requirement. Adv Software Engineering, By Asst Prof Athar Mohsin, MSCS 19, MCS-NUST
System Modeling • Process of developing abstract models of a system, with each model presenting a different view or perspective of that system. • Representing a system using some kind of graphical notation, which is now almost always based on notations in the Unified Modeling Language (UML). • System modelling helps the analyst to understand the functionality of the system and models are used to communicate with customers. • A flow chart visually models an algorithm's logic. • Pseudo code textually models an algorithm's logic. Adv Software Engineering, By Asst Prof Athar Mohsin, MSCS 19, MCS-NUST
UML • System modelling helps the analyst to understand the functionality of the system and models are used to communicate with customers. • Activity diagrams: • show the activities involved in a process or in data processing . • Use case diagrams: • show the interactions between a system and its environment. • Sequence diagrams: • show interactions between actors and the system and between system components. • Class diagrams: • show the object classes in the system and the associations between these classes. • State diagrams: • show how the system reacts to internal and external events. Adv Software Engineering, By Asst Prof Athar Mohsin, MSCS 19, MCS-NUST
Software Design • “The process of defining the architecture, components, interfaces, and other characteristics of a system or component” and “The result of [that] process.” IEEE 610.12. • As a process: • software design is the software engineering life cycle activity in which software requirements are analyzed in order to produce a description of the software’s internal structure that will serve as the basis for its construction. • As a result software design must describe the software architecture: • How software is decomposed and organized into components and • The interfaces between those components.
Design Process • Software design is generally considered a two-step process: • Software architectural design (sometimes called top level design): • Describing software’s top-level structure and organization and identifying the various components • Software detailed design: • Describing each component sufficiently to allow for its construction. • The output of this process is a set of models that record the major decisions that have been taken. Adv Software Engineering, By Asst Prof Athar Mohsin, MSCS 19, MCS-NUST
Design Vs Architecture Vs Implementation • Terms “architecture”, “design” and “implementation” can be viewed at varying degree of abstraction • complete details (“implementation”), • few details (“design”), and • the highest form of abstraction (“architecture”). • Architecture: • An early stage of the system design process. • Represents the link between specification and design processes. • Often carried out in parallel with some specification activities. • It involves identifying major system components and their communications. Adv Software Engineering, By Asst Prof Athar Mohsin, MSCS 19, MCS-NUST
Use of architectural models • As a way of facilitating discussion about the system design • A high-level architectural view of a system is useful for communication with system stakeholders and project planning because it is not cluttered with detail. • Stakeholders can relate to it and understand an abstract view of the system. They can then discuss the system as a whole without being confused by detail. • As a way of documenting an architecture that has been designed • The aim here is to produce a complete system model that shows the different components in a system, their interfaces and their connections. Adv Software Engineering, By Asst Prof Athar Mohsin, MSCS 19, MCS-NUST
Architectural Design • Large Systems – Decomposed into smaller sub systems – Provide some related set of services • Architectural design - Initial design process • identify subsystems (major components) + establish control & communication framework • “A description of the subsystems and components of a software system and the relationships between them.” • Architectural design – link between design & requirement engineering processes • Advantage • Stakeholder communication • Architecture may be used as a focus of discussion by system stakeholders. • System Analysis • whether the system can meet its non-functional requirements. • Large scale reuse • architecture may be reusable across a range of systems
Case Study-1 ATM • A bank has several automated teller machines (ATMs), which are geographically distributed and connected via a wide area network to a central server. • Each ATM machine has a card reader, a cash dispenser, a keyboard/display, and a receipt printer. • By using the ATM machine, a customer can withdraw cash from either current or savings account, query the balance of an account, or transfer funds from one account to another. • A transaction is initiated when a customer inserts an ATM card into the card reader. Encoded on the magnetic strip on the back of the ATM card are the card number, the start date, and the expiration date. • The customer is allowed three attempts to enter the correct PIN; the card is confiscated if the third attempt fails. • Cards that have been reported lost or stolen are also confiscated.
Case Study ATM • Before withdrawal transaction can be approved, the system determines that sufficient funds exist in the requested account, that the maximum daily limit will not be exceeded, and that there are sufficient funds available at the local cash dispenser. • If the transaction is approved, the requested amount of cash is dispensed, a receipt is printed containing information about the transaction, and the card is ejected. • Before a transfer transaction can be approved, the system determines that the customer has at least two accounts and that there are sufficient funds in the account to be debited. • For approved query and transfer requests, a receipt is printed and card ejected.
Architecture and system characteristics • System Architecture affects the NFRs, A particular style chosen for an application depends on NFRs • Performance • Localise critical operations and minimise communications. • Use large rather than fine-grain components. • Security • Use a layered architecture with critical assets in the inner layers. • Safety • Localise safety-critical features in a small number of sub-systems. • Availability • Include redundant components and mechanisms for fault tolerance. • Maintainability • Use fine-grain, replaceable components.
Architectural conflicts • Potential Conflict of Architecture • Performance (large grain components) & Maintainability (fine grain components) • Using large-grain components improves performance but reduces maintainability. • Availability & Security • Introducing redundant data improves availability but makes security more difficult. • Safety & Performance • Localising safety-related features usually means more communication so degraded performance. • Some compromise must be found if both are important requirements
Architecture Design decisions • System architects make decisions on following: • Generic application architecture, use as a template • Like MSOffice • How to distribute the system across a number of processors • For larger systems, not needed for single processor • The appropriate architecture for the target application • Like client – server • How to decompose into module • Identify the subsystems • How to control the operation of units in the system • How the execution of subsystem is controlled • How will the architecture be evaluated • Compare with existing model • How to document the architecture • May use graphical representations to describe the working of system
Architectural Styles • Various authors have identified a number of major architectural styles. • General structure • (for example, layers, pipes and filters) • Distributed systems • (for example, client-server, three tiers, broker) • Interactive systems • (for example, Model-View-Controller, Presentation-Abstraction-Control) • Others • (for example, batch, interpreters, process control, rule-based).
Architectural models • Used to document an architectural design. • Static structural model: • shows the major system components. • Dynamic process model: • shows the process structure of the system. • Interface model that: • sub-system interfaces. • Relationships model: • data-flow model that shows sub-system relationships. • Distribution model: • shows how sub-systems are distributed across computers.
The repository model • Sub-systems must exchange information and data so that they can work together. • This may be done in two ways: • All shared data is held in a central database or repository and may be accessed by all sub-systems; • Each sub-system maintains its own database and passes data explicitly to other sub-systems. • When large amounts of data are to be shared, • The repository model of sharing is most commonly used • Data is generated by one subsystem and used by other • E.g., command and Control system, • Management information system, • CAD system and CASE tools
Client-server model • Client –Server model: A system model, where system is organised as • A set of services, associated servers and clients that access the services • Major components: • A set of servers to offer services to other sub systems • Print server to offer printing services • A set of clients to call the services offered by servers • These are the sub systems at their own • A network that allow clients to access the services • Client must know the existence of server and the services offered • Client send the request and has to wait for reply from server • Both client and server may run on similar machine but normally client and server are distributed
Abstract machine (layered) model • Used to model the interface of sub-systems. • Organises the system into a set of layers (or abstract machines) each of which provide a set of services • Each layer acts as an abstract machine • E.g., OSI model, computer as layered machine • Supports the incremental development of sub-systems in different layers. • When a layer interface changes, only the adjacent layer is affected.
Control styles • The model for structuring a system are concerned with how a system is decomposed into subsystem • To work as a system the subsystem must be controlled • To provide right services at the right palace at right time • Two generic control styles used in SW systems are: • Centralised control • One sub-system has overall responsibility for control and starts and stops other sub-systems. • Event-based control • Each sub-system can respond to externally generated events from other sub-systems or the system’s environment.
Centralised control • A controller sub-system takes responsibility for managing the execution of other sub-systems • Centralized control is divided into: • Call-return model • control starts at the top of a function hierarchy and using function calls moves downwards. • Applicable to sequential systems. • Manager model • Applicable to concurrent systems. • One system component controls the stopping, starting and coordination of other system processes Adv Software Engineering, By Asst Prof Athar Mohsin, MSCS 19, MCS-NUST
Real-time system control • Suitable for soft real time systems • Central manager controls the set of processes associated with sensors and actuators • System controller decides to start and stopping the process • Depending on system state • Controller continuously loops between sensors and processes Adv Software Engineering, By Asst Prof Athar Mohsin, MSCS 19, MCS-NUST
Event-driven systems • Driven by externally generated events where the timing of the event is the control of the sub-systems which process the event. • Two principal event-driven models • Broadcast models. An event is broadcast to all sub-systems. Any sub-system which can handle the event may do so; • Interrupt-driven models. Used in real-time systems where interrupts are detected by an interrupt handler and passed to some other component for processing. • Other event driven models include spreadsheets and production systems.
Interrupt-driven systems • Used in real-time systems where fast response to an event is essential. • There are known interrupt types with a handler defined for each type. • Each type is associated with a memory location and a hardware switch causes transfer to its handler. • Allows fast response but complex to program and difficult to validate. Adv Software Engineering, By Asst Prof Athar Mohsin, MSCS 19, MCS-NUST
Case Study-2 ICDE • The Information Capture and Dissemination Environment (ICDE) is part of a suite of software systems for providing intelligent assistance to professionals such as: • Financial analysts, scientific researchers and intelligence analysts. • ICDE automatically captures and stores data that records a range of actions performed by a user when operating a workstation.
Case study- ICDE System • Example, when a user performs a Google search, the ICDE system will transparently store in a database: • The search query string • copies of the web pages returned by Google that the user displays in their browser • This data can be used subsequently retrieved from the ICDE database and used by third-party software tools that attempt to offer intelligent help to the user. • These tools might interpret a sequence of user inputs, and try to find additional information to help the user with their current task. • Other tools may crawl the links in the returned search results that the user does not click on, attempting to find potentially useful details that the user overlooks.
Local information repositories Internet ICDE Repository ICDE Recording Software Analyst 3rd Party Tools ICDE Schematic ICDE Monitoring
ICDE Use Cases • ICDE initial production: • Aim was to implement the Capture User Actions use case. • Basically a complex, raw information capture tool, GUI for looking at captured data • The three major use cases: • Incorporate the capture of user actions, • The querying of data from the data store, and • The interaction of the third party tools with the user. Adv Software Engg, MSCS 18, Asst Prof Athar Mohsin, MCS-NUST
Case Study Context • ICDE production: • Design was based on simple 2 tier client-server, single machine deployment • Programmatic access to data through very complex SQL (38 tables, 46 views) • The collection and analysis components were written in Java and access the data store directly using the JDBC API. • The complete ICDE application executed on Microsoft Windows XP.
ICDE version 2.0 • ICDE Major changes for next version focused on • Support 3rd party tool integration • Enhance data capture tools (GUI)on, testing, data access and large production scale deployments (100’s of users) • Very few concrete requirements for the 3rd party tool support or release to full production environment Adv Software Engg, MSCS 18, Asst Prof Athar Mohsin, MCS-NUST
Architecturally Significant Requirements for ICDE v2.0 • ICDE project requirements: • Heterogeneous platform support for access to ICDE data • Instantaneous event notification (local/distributed) • Over the Internet, secure ICDE data access • Ease of programmatic data access • ICDE Project team requirements: • Insulate 3rd party projects and ICDE tools from database evolution • Reliability for multi-tool ICDE deployments • Scalable infrastructure to support large, shared deployments • Minimize license costs for a deployment • Unknowns • Minimize dependencies, making unanticipated changes potentially easier
Quality Attributes of Architecture • Often know as –ilities • Reliability • Availability • Portability • Scalability • Performance • Part of a system’s NFRs • “how” the system achieves its functional requirements • The Application must be scalable • “It must be possible to scale the deployment from an initial 100 geographically dispersed user desktops to 10,000 without an increase in effort/cost for installation and configuration.”
Performance • Many examples of poor performance in enterprise applications • Poor performance is killer • Performance requires a: • Metric of amount of work performed in unit time • Deadline that must be met for correct operation. • Throughput • A measure of the amount of work an application must perform in unit time. • Work is typically measured in transactions per second (tps), or messages processed per second (mps). • For example, an on-line banking application might have to guarantee it can execute 1000 transactions per second from Internet banking customers. • An inventory management system for a large warehouse might need to process 50 messages per second from trading partners. • Response Time: • measure of the latency an application exhibits in processing a request • Usually measured in (milli) seconds