4-1 Intro To Software Eng
4-1 Intro To Software Eng
Computer software has become a driving force. It is the engine that drives business decision making. It serves as the basis for modern scientific investigation and engineering problem solving. It is a key factor that differentiates modern products and services. It is embedded in systems of all kinds: transportation, medical, telecommunications, military, industrial processes, entertainment, office products, . . . etc. Software is virtually inescapable in a modern world.
THE PRODUCT
(1) instructions (computer programs) that when executed provide desired function and performance, (2) data structures that enable the programs to adequately manipulate information, and (3) documents that describe the operation and use of the programs.
Software
Early Years Batch orientation Custom software Second Era Multi-user, Realtime Database Product software
Third Era Distributed systems Low cost hardware Fourth Era Desktop systems Object Oriented Technologies AI Network computers
1. Software is developed or engineered, it is not manufactured in the classical sense. 2. Software doesn't wear out. 3. Although the industry is moving toward component-based assembly, most software continues to be custom built.
Software Characteristics
Software Characteristics
Maintainability Software should be written in such a way that it may evolve to meet the changing needs of customers. This is a critical attribute because software change is an inevitable consequence of a changing business environment. Dependability Software dependability has a range of characteristics, including reliability, security and safety. Dependable software should not cause physical or economic damage in the event of system failure.
Efficiency Software should not make wasteful use of system resources such as memory and processor cycles. Efficiency therefore includes responsiveness, processing time, memory utilization, etc. Usability Software must be usable, without undue effort, by the type of user for whom it is designed. This means that it should have an appropriate user interface and adequate documentation.
System software Real-time software Business software Engineering and scientific software Embedded software Personal computer software Web-based software Artificial intelligence software
Software Applications
What is it? When you build a product or system, it s important to go through a series of predictable steps a road map that helps you create a timely, high-quality result. The road map that you follow is called a software process. Who does it? Software engineers and their managers adapt the process to their needs and then follow it. In addition, the people who have requested the software play a role in the software process.
THE PROCESS
Why is it important? Because it provides stability, control, and organization to an activity that can, if left uncontrolled, become quite chaotic. What are the steps? At a detailed level, the process that you adopt depends on the software you re building. One process might be appropriate for creating software for an aircraft avionics system, while an entirely different process would be indicated for the creation of a Web site.
THE PROCESS
What is the work product? From the point of view of a software engineer, the work products are the programs, documents, and data produced as a consequence of the software engineering activities defined by the process. How do I ensure that I ve done it right? A number of software process assessment mechanisms enable organizations to determine the maturity of a software process. However, the quality, timeliness, and long-term viability of the product you build are the best indicators of the efficacy of the process that you use.
THE PROCESS
SOFTWARE ENGINEERING:
A LAYERED TECHNOLOGY
(1) The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. (2) The study of approaches as in (1).
Software Engineering
Mathematics Programs have mathematical properties The correctness and complexity of many algorithms are mathematical concepts that can be proven.
Nature of SE
Engineering SE is considered by many to be an engineering discipline Proper analysis, documentation, and commented code are signs of an engineer.
Nature of SE
Manufacturing Programs are built in as a sequence of steps. Advocates hope to improve the productivity of developers and the quality of final programs
Nature of SE
Project Management
Commercial software projects require management. There are budgets and schedules to set. People to hire and lead. Resources to acquire.
Nature of SE
Nature of SE
Performance The act of writing software requires that developers summon the energy to find the answers they need while they are at the keyboard.
Nature of SE
Software engineering process is the glue that holds the technology layers together and enables rational and timely development of computer software. Process defines a framework for a set of key process areas (KPAs) that must be established for effective delivery of software engineering technology. The key process areas form the basis for management control of software projects
Software engineering methods provide the technical howto's for building software. Methods encompass a broad array of tasks that include requirements analysis, design, program construction, testing, and support. Software engineering methods rely on a set of basic principles that govern each area of the technology and include modeling activities and other descriptive techniques
Software engineering tools provide automated or semiautomated support for the process and the methods. When tools are integrated so that information created by one tool can be used by another, a system for the support of software development, called computer-aided software engineering, is established.
CASE combines software, hardware, and a software engineering database (a repository containing important information about analysis, design, program construction, and testing) to create a software engineering environment analogous to CAD/CAE (computer-aided design/engineering) for hardware.
Engineering is the analysis, design, construction, verification, and management of technical (or social) entities.
COMPUTER SCIENCE
CUSTOMER
Theories
Computer Functions
Problem
SOFTWARE ENGINEERING
Tools and Techniques to Solve Problem
Problem Solving
What is the problem to be solved? What characteristics of the entity are used to solve the problem? How will the entity (and the solution) be realized? How will the entity be constructed? What approach will be used to uncover errors that were made in the design and construction of the entity? How will the entity be supported over the long term, when corrections, adaptations, and enhancements are requested by users of the entity.
Regardless of the entity to be engineered, the following questions must be asked and answered:
The work associated with software engineering can be categorized into three generic phases, regardless of application area, project size, or complexity. The definition phase focuses on what. The development phase focuses on how. The support phase focuses on change associated with error correction, adaptations required as the software's environment evolves, and changes due to enhancements brought about by changing customer requirements.
Correction. Corrective maintenance changes the software to correct defects. Adaptation. Adaptive maintenance results in modification to the software to accommodate changes to its external environment. Enhancement. Perfective maintenance extends the software beyond its original functional requirements. Prevention. Preventive maintenance, often called software reengineering, makes changes to computer programs so that they can be more easily corrected, adapted, and enhanced.
Sometimes called the classic life cycle or the waterfall model. The linear sequential model suggests a systematic, sequential approach to software development that begins at the system level and progresses through analysis, design, coding, testing, and support.
System/information engineering and modeling. System engineering and analysis encompass requirements gathering at the system level with a small amount of top level design and analysis. Information engineering encompasses requirements gathering at the strategic business level and at the business area level.
Software requirements analysis. The software engineer ("analyst") must understand the information domain for the software, as well as required function, behavior, performance, and interface. Requirements for both the system and the software are documented and reviewed with the customer.
Design. The design process translates requirements into a representation of the software that can be assessed for quality before coding begins. Distinct attributes of a program:
data structure software architecture interface representations, and procedural (algorithmic) detail.
Code generation. The design must be translated into a machine-readable form. If design is performed in a detailed manner, code generation can be accomplished mechanistically.
Testing. The testing process focuses on the logical internals of the software, ensuring that all statements have been tested, and on the functional externals; that is, conducting tests to uncover errors and ensure that defined input will produce actual results that agree with required results.
Support. Software support/maintenance reapplies each of the preceding phases to an existing program rather than a new one.