This action might not be possible to undo. Are you sure you want to continue?
Software and Software Engineering
What is Software?
• is omnipresent in the lives of billions of human beings around the globe. • consists of the computer program and its related documentation. • was coined by John Turkey in 1958. • Theoretical foundations behind the concept of computer program were established by Alan Turing in the 1930s.
• As the application of a disciplined approach for the development and maintenance of computer software. • IEEE (Institute of Electrical and Electronics Engineers) states that it is software engineering that deals with the establishment and use of sound engineering principles to economically obtain software that is reliable and works efficiently on real machines.
Types of Software
• There are two categories of software that are currently in use: • System Software – typically deals with interfacing with hardware and provides services to applications software.
• Modeling and simulation – applications that include domain – specific modeling and simulation packages for military. medical. • Intelligent – Applications that include specialized domain – specific expert systems. robot vision software and others. . educational and training uses.Types of Applications Software • Games and Entertainment: Software games for handled devices. including mobile phones. PC or stand – alone games. financial.
• Productivity: AutoCAD.• Real – Time: Applications that include industrial plant monitoring and control systems. • Embedded: Applications that include home appliances controllers. data management software and others. customer relation management software. • Enterprise: Applications that include business workflow management software. .
. • Multimedia: Applications that include software for video. web browsers. • Educational: Applications that include school and university management. online and distant learning and educational software for children. web portals. image and sound editing.• Web – based : web services.
Testing Correction .Generics Stages in Software Development Definition Requirements Implementation Design Maintenance Adaptation Enhancement Specification Coding.
The Software Triad Behavior Software Structure Architecture .
sequence.• Software Behavior: can be modeled by diagrams including state. • Software Architecture: can be modeled by package and component diagrams. . timing and activity diagrams.
Software Stakeholders • Those people who can affect or be affected by the software product that is to be developed. .
Stakeholders in a software products Government Agencies Clients Vendors Professional organizations Software Product Tool Developers Developers Users Maintainers .
.• Software developers: People involved in the development of the software. • Software vendors: People responsible for marketing and selling the software application and who use various distribution channels. deployment and configuration management. • Software maintainers: People involved in the post delivery and installation of the software including maintenance.
• Software users: Intended users of the software who can be classified according to the functionality offered to them and based on their roles or responsibilities. • Clients: people who pay for the software that is developed. . • Government Bodies: Entities that might set and enforce rules and regulations to which the software must conform.
Related Disciplines Mathematics Economics Computer Science Computer Engineering .
• Mathematics: A mathematics background is needed if the software product is meant to solve complex engineering problems. play an important role in the selection or design of an appropriate algorithm and its data structures when the software is in the design phase. . • Computer science: The study and development of algorithms and the analysis of their complexities.
• Economics: A background in the economics of the product and the financial feasibility of the software product being developed is crucial for the success of the product. .• Computer engineering: A computer engineering background might be needed for the successful development of some types of software products.
• Software engineers shall act in a manner that is in the best interests of their client and employer .Code of Ethics and Professional Practice • Public • Software engineers shall act as consistently with the public interest. . • Product • Software engineers shall ensure that their products and related modifications meet the highest professionals standards possible. consistent with the public interest.
• Software engineers shall be fair to and supportive of their colleagues . • Peers and self • Software engineers shall maintain integrity and independence in their professional judgment.• Profession • Software engineers shall advance the integrity and reputation of the profession consistent with the public interest.
The Three cornerstones of a Software People Project Process .
The Three Ps • Project • tasks are developed based on the adopted process model or methodology. • People • Are assigned specific tasks on time and within budget . • Process • are part of a software life cycle model or software methodology.
• Correctness: is the degree to which the software meets its requirements specification. • Efficiency: is the degree to which the software system performs its function using the least amount of computational and memory resources. Consistency and Completeness. . Accuracy.Desirable Software Capabilities • Availability: is the degree to which the software is available when it services are required. Correctness.
• Reliability: is the ability of a software system to perform its function under stated conditions and for specified period of time. • Usability: is the degree of ease with which the software system can be used.Use – Centered Software Capabilities • Integrity: is the degree to which the software systems prevents unauthorized access to information or programs. .
Developer-centered software capabilities • Flexibility: is the measure of how easily the software system can be extended or expanded. • Maintainability: is the measure of how easily the software system can be modified to fix errors. . to improve functions or to adapt it to different environments. • Interoperability: is the ability of the software system to exchange information with other externals systems.
• Reusability: is the measure of how easily a software component can be reused in the same software system or utilized to build new systems. . • Testability: is the measure of how easily the test cases can be selected and excuted.• Portability: is the ease with which the software system can be moved to a different software or hardware environment or platform.
.Review Questions: • Which of the principles of the code of ethics deals with user’s privacy concerns? How? • Is a software fault the responsibility of one developer ?Why? Discuss your arguments.
Chapter 2 Software Development Life Cycle Models .
. • Object – oriented software development model • Software engineering models.Learning Outcomes • In this chapter you will learn: • Software development life cycle models and their importance. deliverables of a life cycle model. • Waterfall model and its various. • Phases. • Pre – development and on going life cycles. activities.
flexible.Life Cycle Models • A software development life cycle model defines the framework under which a software product is going to be developed. and scalable. . • An ideal life cycle model is generic. adaptable.
Pre – Development Activities and Deliverables • Pre – development activities include activities related to: • • • • concept exploration system allocation software allocation initial project management activities .
Initiation .Activity Type Deliverables Concept Exploration System Allocation Statement of need Alternatives and feasibility assessments Hardware. and schedulling Software Allocation Project Management . risk planning. personnel and software requirements System interfaces requirements Requirements for reused or off-the-shelf software Metrics specification Selected and adapted life cycle model specification Phases and deliverables Initial project plan document Estimation. resource allocation.Planning .
• the phases of the model include requirements analysis. and operations and maintenance. • first presented by Winston Royce in 1970. Activities and Deliverables • is one of most popular development models used in software industry. design.Waterfall Model Development Phase. . implementation. testing and integration.
Analysis Design Coding Testing Installation Maintenance .
Life Cycle Phase Deliverables Analysis Requirements Specifications Vision and Scope Requirements Software requirements specification User interface specification Acceptance Test Plan High – Level design Database Design User Interface Design Test plans Unit Stress and load Performance Integration Document code Unit test plans execution Design Implementation Testing Installation Execution and result analysis report Integration Test Installed Software Official acceptance of the software .
Software Maintenance Activities • Corrective maintenance: activities triggered by software faults encountered during the use of the software. They involve simple fixes. . • Preventive maintenance: activities involve dealing with weakness and vulnerabilities identified by the development team during or after deploying the software the software and that were not dealt with in the installed software. such as cosmetic changes to the user interface.
• Perfective maintenance: activities involve during requests to improve the efficiency of the algorithms and data structures as well as user interface interactions in the design. . • Adaptive maintenance: activities involve requests from software stakeholders to adapt the software to different operating environments.
CONTINUOUS LIFE CYCLE ACTIVITIES AND DELIVERABLES .
Support and User Training .• • • • • • Project Management Quality Assurance Evaluation and Testing Technical Support and Internal Testing Documentation Operations.
Activity Type Deliverables Project Management Monitoring Planning (update) Control Quality Assurance Evaluation and Testing Updated project plan Metrics collection plan Metrics database maintained Project log maintained Quality assurance plan Quality assurance review reports Test data Test execution reports Test plans Review plans and reports Training plan Training programs Training manuals User manual Installation and operations manuals Technical support and internal training Documentation .
Prototyped Waterfall Model Prototype requirements Requirements Specifications Design Coding Testing Operations .
Incremental and Iterative Model Requirements and their priorities Release 1: Top priority requirements Requirements specification Design Implementation Integration Deployment Release 2: Medium priority requirements Requirements specification Design Implementation Integration Deployment Release 3: Low priority requirements Requirements specification Design Implementation Integration Deployment .
.Spiral Model • was introduced by Barry Boehm in 1998.
Software Development and Maintenance Terms .
Hybrid functional and project-based team organizations Requirements specification Design Implementation Integration Deployment Project A Project B Project C .
However. Humphrey • does not recommend any particular set of mature processes. . the CMM can b used to assess the maturity of existing processes.Software Processes Capability Maturity Model • was developed by W.
Five maturity Levels • Level 1: Initial • The processes used are ad hoc. informal and not documented. • Level 3: Defined • The development are documented and well defined. • Level 2: Repeatable • The development methodology and all its phases are partially documented. . The knowledge and experiences are not archived and documented.
• Level 4: Managed • Developmental metrics are collected during the execution of the project to provide quantitative basis for software quality management • Level 5: Optimized • Using metrics collected during the execution of the project phases. and using the documented standards and processess .
it's always a people problem. .End of Chapter 2 Thank you No matter what the problem is.
Chapter 3 Software Requirements .
This action might not be possible to undo. Are you sure you want to continue?